http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html

链接归纳的很详细

  • 首先在/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标签就是把上面我们所配置的事务管理两部分属性整合起来作为整个事务管理。

    下文转自http://blog.csdn.net/dw_java08/article/details/7682890

    applicationContext-common.xml :

    <?xml version="1.0" encoding="UTF-8"?>

    <beans xmlns="http://www.springframework.org/schema/beans" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:aop="http://www.springframework.org/schema/aop" 
         xmlns:tx="http://www.springframework.org/schema/tx" 
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd 
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> 
    <!-- 配置sessionFactory --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
    <value>classpath:hibernate.cfg.xml</value> 
    </property> 
    </bean>

    <!-- 配置事务管理器 --> 
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory"> 
    <ref bean="sessionFactory"/> 
    </property> 
    </bean>

    <!-- 配置事务的传播特性 --> 
    <tx:advice id="txAdvice" transaction-manager="transactionManager"> 
    <tx:attributes> 
    <tx:method name="add*" propagation="REQUIRED"/> 
    <tx:method name="del*" propagation="REQUIRED"/> 
    <tx:method name="modify*" propagation="REQUIRED"/> 
    <tx:method name="*" read-only="true"/> 
    </tx:attributes> 
    </tx:advice>

    <!-- 那些类的哪些方法参与事务 --> 
    <aop:config> 
    <aop:pointcut id="allManagerMethod" expression="execution(* com.z2sci.soa.manager.*.*(..))"/> 
    <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/> 
    </aop:config>

    </beans>

    spring使用 <tx:advice>和 <aop:config> 用来配置事务,具体如何配置你可以参考Spring文档。

    我解释一下(* com.z2sci.soa.manager.*.*(..))中几个通配符的含义:

    |第一个 * —— 通配 任意返回值类型| 
    |第二个 * —— 通配 包com.z2sci.soa.manager下的任意class| 
    |第三个 * —— 通配 包com.z2sci.soa.manager下的任意class的任意方法| 
    |第四个 .. —— 通配 方法可以有0个或多个参数|

    综上:包com.z2sci.soa.manager下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法 
    <tx:advice/> 有关的设置

    这一节里将描述通过 <tx:advice/> 标签来指定不同的事务性设置。默认的 <tx:advice/> 设置如下:

    事务传播设置是 REQUIRED

    隔离级别是 DEFAULT

    事务是 读/写

    事务超时默认是依赖于事务系统的,或者事务超时没有被支持。

    任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚

    这些默认的设置当然也是可以被改变的。 <tx:advice/> 和 <tx:attributes/> 标签里的 <tx:method/> 各种属性设置总结如下: 
    表 9.1. <tx:method/> 有关的设置

    属性 是否需要? 默认值 描述
    name   与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'、'handle*'、'on*Event'等等。
    propagation REQUIRED 事务传播行为
    isolation DEFAULT 事务隔离级别
    timeout -1 事务超时的时间(以秒为单位)
    read-only false 事务是否只读?
    rollback-for   将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
    no-rollback-for   不 被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException

spring tx:advice事务配置相关推荐

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

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010741376/article/details/46584463 spring tx:advic ...

  2. Spring 3.1 事务配置

    版权声明:原创作品,谢绝转载!否则将追究法律责任. Spring 3.1 事务配置 spring发的包最好用的是2.5.6:所依赖的包全部都有,可是后来的版本都缺这少那的,导致开发中遇到各种各样的问题 ...

  3. Spring声明式事务配置详解

    事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性.本文主要讲解事务涉及到一些概念以及spring中事务的使用.如有理解偏颇之处,恳请各位大神指正,小编不胜感激! 1.何为事务?   ...

  4. spring tx:advice 和 aop:config 配置事务 1

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. spring中的事务配置

    为什么80%的码农都做不了架构师?>>>    一 简介 spring中提供了三种事务管理的方法. 编程式事务管理 :亦即自己编写事务管理的代码,通过注入获取到spring中的事务管 ...

  6. spring tx:advice(转)

    默认的 <tx:advice/> 设置如下: 事务传播设置是 REQUIRED 隔离级别是 DEFAULT 事务是 读/写 事务超时默认是依赖于事务系统的,或者事务超时没有被支持. 任何 ...

  7. spring aop xml事务配置

    <aop:config> <!-- 通过aop定义事务增强切面--><aop:pointcut id="serviceMethod" expressi ...

  8. Spring tx:advice/

    <tx:advice/> 有关的设置 这一节里将描述通过 <tx:advice/> 标签来指定不同的事务性设置.默认的 <tx:advice/> 设置如下: 事务传 ...

  9. Spring Tx (一) (事务)

    文章目录 1.事务的定义 2.事务特性 3.事务的属性 3.1 隔离级别 3.2 传播机制 1.事务的定义 应用层: Spring-Mybatis 驱动层: JDBC事务单数据库事务, JTA事务分布 ...

最新文章

  1. 通过这12张手绘图,搞懂什么是微服务架构
  2. LNMP平台搭建之一:nginx编译安装
  3. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
  4. php global global,PHP中global全局变量的作用范围
  5. Ambari 架构(三)Ambari Server 架构
  6. HTML <dfn> 标签的简单介绍
  7. linux安装joomla,安装Joomla
  8. Python编辑统一缩进(Pycharm)
  9. git tag的使用
  10. 3.请求安全-- 结合使用的安全优势总结
  11. 用心摘种一树技能,植树节送3本书
  12. EXTI外部中断触发:神舟IV
  13. 利用python进行数据加载和存储
  14. jquery左边滚动,完毕后跳转回来
  15. pause容器作用_Kubernetes pod里一个特殊的容器:pause-amd64
  16. DevExpress WPF初级教程 - 图像选择器的使用
  17. VIVADO HLS数组的优化
  18. 服务器蓝屏显示7f,电脑蓝屏代码7f怎么解决 如何处理电脑蓝屏代码7f
  19. Angel investor
  20. .net写加密的com组件给ASP,VB,VC等其他语言调用

热门文章

  1. python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0
  2. Wi-Fi Sigma测试系统
  3. Java Web HTML基础 静态网页制作
  4. 网上作业批改系统的设计与实现(JSP,MySQL)
  5. adb发送什么命令能在手机屏幕弹窗显示_将平板、手机作为电脑第二屏幕(Linux系统下)...
  6. 使用vue-admin-template搭建简单增删改查导入导出项目及CentOs服务器部署
  7. 在word中对学位论文进行页码和页眉设置的方法
  8. dnf命令 (常用总结)
  9. CXPlain: Causal Explanations for Model Interpretation under Uncertainty
  10. Win7系统彻底删除打印机驱动