spring 控制事务

<!-- 对数据源进行事务管理 -->
 
     <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="dataSource"/>
 
       <aop:config>  
        <aop:pointcut id="transactionPointcut" expression="execution(* cn.springmvc.service.*.*(..))"/>  
        <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/>  
        </aop:config>   
        <tx:advice id="txAdvice" transaction-manager="transactionManager">  
        <tx:attributes>  
            <tx:method name="get*" read-only="false" propagation="REQUIRED"/> 
            <tx:method name="*" propagation="REQUIRED" read-only="false"  />  
        </tx:attributes>  
        </tx:advice>  
 
 
  1. /** 
  2.      * 说下事务的传播属性  
  3.      * REQUIRED (默认)    业务方法需要在事务中运行,如果方法运行的时候已经开启事务,就加入事务,否则创建新的事务 
  4.      * NOT_SUPPORTED    声明方法不需要开启事务.如果已经开启事务后调用该方法.则先挂起该事务,方法执行完毕后,事务恢复 
  5.      * REQUIRES_NEW     不管是否存在事务,都另行开启新的事务.如果先前已经开启事务,挂起原先事务.创建新的事务. 
  6.      *                  新的事务执行结束后,恢复原先事务 
  7.      * MANDATORY    只能在已经存在的事务中执行,不能自行创建事务,如果在没有开启事务的环境下调用,容器抛出例外 
  8.      * SUPPORTS     墙头草,有事务就在事务中执行.没事务就在没事务的环境下执行 
  9.      * NEVER    绝对不能在事务中执行.如果执行.抛出例外  
  10.      * NESTED   如果有事务存在,开启一个新事务嵌套在上层事务中.开启的新事务具有自己独立的回滚点.新事务的回滚不会对外部事务造成影响, 
  11.      *          但是外部事务的提交会直接提交嵌套事务 
  12.      *          如果没有事务存在,则按照REQUIRED属性执行,该属性只对DataSourceTransationManager事务管理器有效 
  13.      */  
原文地址:https://www.cnblogs.com/zfxJava/p/5660950.html