在Spring Framework中通过XML配置澄清关于声明性事务的请求

时间:2013-03-01 09:58:39

标签: java spring spring-mvc spring-aop spring-transactions

我正在通过XML配置学习Spring Declarative Transaction阅读本文: http://www.tutorialspoint.com/spring/declarative_management.htm

在我的 Beans.xml 配置文件中,我只有一些问题需要了解AOP如何工作:

   <tx:advice id="txAdvice"  transaction-manager="transactionManager">
      <tx:attributes>
      <tx:method name="create"/>
      </tx:attributes>
   </tx:advice>

   <aop:config>
      <aop:pointcut id="createOperation" 
      expression="execution(* com.tutorialspoint.StudentJDBCTemplate.create(..))"/>
      <aop:advisor advice-ref="txAdvice" pointcut-ref="createOperation"/>
   </aop:config>

那么,究竟是什么意思呢?

我认为以下列方式工作(但我不确定):

要应用的事务语义封装在定义中,我认为在这种情况下,只需指定 StudentDAO 接口中定义的 create()方法成为交易行为(是不是?)

关于 aop:config 标记内容的含义我认为只能确保上述事务建议针对com.tutorialspoint.StudentJDBCTemplate.create()方法的任何执行运行

是不是?或者我错过了什么?

TNX

安德烈

1 个答案:

答案 0 :(得分:2)

你是对的,

aop:pointcut会找出应用建议的所有连接点,使用tx:advice定义。

tx:advice还提供了额外的代码,可以使用带有方法属性的tx:method代码过滤掉这些连接点。

在上述例子中,

切入点只会找到一个连接点,而tx:advice将使用tx:method的name属性过滤掉连接点并应用指定的配置。在示例中,将使用默认配置值。