2016-08-22 39 views
1

在我的web项目中有一个很大的实体对象(JAVA spring,hibernate,spring-boot)在更新POJO对象中的字段时,我必须将某些事件推送到队列中,并且执行一些非事务性操作。哪种设计模式(优雅的方式)应该用于以下用例?

我有两个问题

  1. 现在,我打算写一个方面的对象,它确实这些非事务性的行为和事件推动。我有关于服务层方法的@transactional(写入方面)。这些方面方法中的失败是否会回滚服务层方法的事务?

  2. 我提供了两种更新POJO对象中字段的方法。

    • 个别休息api为每个领域。
    • 更新整个对象的API。(只有NOT NULL字段将在这里更新)


    在我需要检查一个字段是否被更新与否并执行事件推动各领域的第二种情况(代码看起来很笨拙)

有没有什么优雅的方法来解决这个问题?

+0

请问您能期待更具体的条款吗?这太抽象了,不明白你真正需要什么。 –

回答

1
  1. 您可以定义首先按方面包装您的服务方法,然后通过事务处理。因此,这将是这样的:

    BEGIN TRANSACTION 
        BEGIN ASPECT 
        METHOD 
        END ASPECT 
    END TRANSACTION 
    

您可以使用@Order(0)注释上一个方面首先使用它。

@Aspect 
@Order(0) 
@Component 
public class SomeAspect {} 
相关问题