Spring <tx:advice>事务配置

转载 2015年07月09日 12:00:28
首先在/WEB-INF/applicationContext.xml添加以下内容:
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory">
       <ref bean="mySessionFactory"/>
   </property>
</bean>
注:这是作为公共使用的事务管理器Bean。这个会是事先配置好的,不需各个模块各自去配。


下面就开始配置各个模块所必须的部分,在各自的applicationContext-XXX-beans.xml配置的对于事务管理的详细信息。
首先就是配置事务的传播特性,如下:
<!--  配置事务传播特性 -->
<tx:advice id="TestAdvice" transaction-manager="transactionManager">
    <tx:attributes>
      <tx:method name="save*" propagation="REQUIRED"/>
      <tx:method name="del*" propagation="REQUIRED"/>
      <tx:method name="update*" propagation="REQUIRED"/>
      <tx:method name="add*" propagation="REQUIRED"/>
      <tx:method name="find*" propagation="REQUIRED"/>
      <tx:method name="get*" propagation="REQUIRED"/>
      <tx:method name="apply*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>
<!--  配置参与事务的类 -->
<aop:config>
<aop:pointcut id="allTestServiceMethod" expression="execution(* com.test.testAda.test.model.service.*.*(..))"/>
<aop:advisor pointcut-ref="allTestServiceMethod" advice-ref="TestAdvice" />
</aop:config>

需要注意的地方:

(1) advice(建议)的命名:由于每个模块都会有自己的Advice,所以在命名上需要作出规范,初步的构想就是模块名+Advice(只是一种命名规范)。

(2) tx:attribute标签所配置的是作为事务的方法的命名类型。

         如<tx:method name="save*" propagation="REQUIRED"/>

        其中*为通配符,即代表以save为开头的所有方法,即表示符合此命名规则的方法作为一个事务。

        propagation="REQUIRED"代表支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

(3) aop:pointcut标签配置参与事务的类,由于是在Service中进行数据库业务操作,配的应该是包含那些作为事务的方法的Service类。

       首先应该特别注意的是id的命名,同样由于每个模块都有自己事务切面,所以我觉得初步的命名规则因为 all+模块名+ServiceMethod。而且每个模块之间不同之处还在于以下一句:

       expression="execution(* com.test.testAda.test.model.service.*.*(..))"

       其中第一个*代表返回值,第二*代表service下子包,第三个*代表方法名,“(..)”代表方法参数。

(4) aop:advisor标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。




spring tx:advice事务配置

首先在/WEB-INF/applicationContext.xml添加以下内容: bean id="transactionManager" class="org.springframework....
  • rong_wz
  • rong_wz
  • 2016年12月21日 17:27
  • 3516

applicationContext-common.xml 之spring tx:advice 和 aop:config 配置事务属性详解

applicationContext-common.xml :        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  ...

spring tx:advice 和 aop:config 配置事务

spring.net tx:advice 和 aop:config 配置事务 匹配名字的方法管理事务

在网上找到的都是java里的配置方式,后来认真读了下spring.net的帮助文档,解决了这个问题:现在把我的server层的配置文件copy出来:          xmlns:aop = "...

spring配置中的tx:advice标签简介

正如在代码清单16-23中所见,你需要在标签内设置id和transaction-manager属性。id是该advice bean的标识,而transaction-manager则必须引用一个Plat...

spring配置中的tx:advice标签简介

摘自:http://blog.csdn.net/shehun11/article/details/38000325 如在代码清单16-23中所见,你需要在标签内设置id和transactio...

spring tx标签配置事务的解析过程

昨天遇到个问题,同一事务内,前一步插入成功的记录,后面的查询不到这条记录,折腾了我好久,最后发现自己把工具类放错包了 。 刚好也顺便看了下tx标签配置方式下 事务的解析过程,参考地址: http:...

spring学习笔记(23)基于tx/aop配置切面增强事务

在上一篇文章中,我们使用了声明式事务来配置事务,使事务配置从service逻辑处理中解耦出来。但它还存在一些缺点: 1. 我们只针对方法名的特定进行拦截,但无法利用方法签名的其它信息定位,如修饰符、...

spring与hibernate集成:采用tx标签配置声明式事务

spring与hibernate集成:采用tx标签配置声明式事务 采用声明式事务 1、声明式事务配置     * 配置SessionFactory     * 配置事...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring <tx:advice>事务配置
举报原因:
原因补充:

(最多只允许输入30个字)