我的Web项目中有一个很大的Entity对象。(JAVA spring,hibernate,spring-boot)在更新POJO对象中的字段时,我必须将一些事件推送到队列并以非事务方式执行某些操作。
我有两个问题
现在我打算编写一个方面对象来执行这些非事务性操作和事件推送。我在服务层方法上有@transactional(为其编写方面)。这些方面方法中的失败是否会回滚服务层方法的事务?
我提供了两种更新POJO对象字段的方法。
在第二种情况下,我需要检查字段是否更新,并为每个字段执行事件推送。(代码看起来很笨)
有没有优雅的方法来解决这个问题?
答案 0 :(得分:1)
您可以定义首先按方面包装服务方法,然后按事务包装。所以它会是这样的:
BEGIN TRANSACTION
BEGIN ASPECT
METHOD
END ASPECT
END TRANSACTION
您可以在方面上使用@Order(0)注释来首先使用它。
@Aspect
@Order(0)
@Component
public class SomeAspect {}