spring tx:advice和spring aop pointcut之间的区别

时间:2012-10-13 13:30:42

标签: java spring hibernate

我是初学者,具有hibernate的工作知识。 我的工作是通过使用spring声明方法来实现事务。并且在Google的帮助下成功地做到了,感谢谷歌。但是无法清楚地理解我在application-context.xml中使用的术语。

1

 <tx-advice>

</tx-advice>
  1. <aop-config>
        // here is point cut were declared
    </aop-config>
    
  2. 有人可以解释我的上述观点,同时我也试图从谷歌那里了解它。

2 个答案:

答案 0 :(得分:27)

您已成功实施spring transaction

Spring中,我们可以通过三种方式实现交易:

  1. 平台事务管理。
  2. Declarative交易管理。
  3. Programmatic交易管理。
  4. 您实施的内容称为通过XML进行声明式事务管理

    简而言之,您通过Spring的AOP功能实现了transaction

    tx:advice XML配置与基于XML的AOP配置相结合,可实现协同组合。例如,我们可以使用方法名来自动确定我们想要在该方法上应用哪种类型的事务。

    我们要对所有以savemodify开头的方法应用交易,例如savePizza()saveColdDrink(),{ {1}},modifyOrder()。对于这些,我们必须在我们的xml文件中定义modifyBill()

    advice

    我们的建议已经准备就绪,正如我们上面所说的那样,我们只想对以<tx:advice id="txAdvice" > <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="modify*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> save开头的方法进行交易。现在我们将使用modify的{​​{1}}元素说明哪些bean需要上述建议。例如,假设我们要将事务建议应用于pointcut包中可用的所有类。

    为此,我们必须在xml文件中添加以下行:

    aop-config

    简而言之,com.mytransaction.service表示要执行的操作或我们要应用的事务行为。 <aop:config> <aop:pointcut id="allServices" expression="execution(*com.mytransaction.service.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/> </aop:config> 内的<tx:advice>元素表示我们要应用交易的位置, 说pointcut

答案 1 :(得分:2)

<tx:advice>标记特定于Transaction Management配置,而<aop:config>标记通常可用于Aspect-Oriented Programming

AOP可用于除事务之外的更多内容,例如日志记录或访问控制。此外,事务管理不一定必须使用AOP实现,它只是通常在Spring中完成的方式(但Spring也支持Programmatic Transaction Management)。