春季tx:建议和春季aop切入点之间的区别



我是spring的新手,有hibernate的工作知识。我的工作是使用spring声明性方法来实现事务。多亏了谷歌,我在谷歌的帮助下成功地做到了。但无法清楚地理解我在application-context.xml.中使用的术语

1.

<tx-advice>
</tx-advice>
  1. <aop-config>
    // here is point cut were declared
    </aop-config>
    

有人能解释我以上的观点吗?同时我也在努力从谷歌上理解它。

由于您已经成功实现了spring transaction

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

  1. 平台交易管理
  2. 声明性交易管理
  3. 程序化事务管理

您实现的称为通过XML的声明性事务管理

简而言之,您通过Spring的AOP特性实现了transaction

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

假设我们希望将事务应用于以savemodify开头的所有方法,如savePizza()saveColdDrink()modifyOrder()modifyBill()。对于这些,我们必须在我们的xml文件中定义advice

<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice> 

我们的建议已经准备好了,正如我们通过使用上面的行所说的,我们只希望在以savemodify开头的方法上进行交易。现在,我们将使用aop-configpointcut元素来说明哪些bean需要上述建议。例如,假设我们想将事务建议应用于com.mytransaction.service包中可用的所有类。

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

<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>

简而言之,<tx:advice>意味着我们要做什么或应用事务的哪种行为。CCD_ 19中的CCD_,比如<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>

<tx:advice>标记专门用于事务管理配置,而<aop:config>标记通常可用于执行面向方面编程。

AOP可以用于比事务多得多的事情,例如日志记录或访问控制。此外,事务管理不一定必须使用AOP来实现,这只是Spring中通常使用的方式(但Spring也支持编程事务管理)。

最新更新