Spring 事务最常用配置

1.(spring3mvc)

Java代码 
  1. <!-- 事务管理器配置,单数据源事务 -->  
  2.     <bean id="transactionManager"  
  3.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  4.         <property name="sessionFactory" ref="sessionFactory" />  
  5.     </bean>  
  6.   
  7.     <!-- 使用annotation定义事务 -->  
  8.     <tx:annotation-driven transaction-manager="transactionManager"  
  9.         proxy-target-class="true" />  

 2.(stuts1+ibatis+spring)

Java代码 
  1. <!-- 事务管理器配置,单数据源事务 -->  
  2.     <!-- transaction Manager (public) -->  
  3.     <bean id="transactionManager"  
  4.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  5.         <property name="dataSource" ref="dataSource" />  
  6.     </bean>  
  7.       
  8.     <!-- uses  @Transactional sign -->  
  9.     <tx:annotation-driven />  
  10.   
  11.     <!-- uses @AspectJ sign-->  
  12.     <aop:aspectj-autoproxy />  
  13.   
  14.     <!-- 配置事务的传播特性 -->  
  15.     <!-- default define, uses transactionManager,default *  is readonly -->  
  16.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  17.         <tx:attributes>  
  18.             <tx:method name="insert*" />  
  19.             <tx:method name="update*" />  
  20.             <tx:method name="del*" />  
  21.             <tx:method name="*" read-only="true" />  
  22.             <tx:method name="transaction*" propagation="NESTED" />  
  23.         </tx:attributes>  
  24.     </tx:advice>  
  25.       
  26.     <!-- 那些类的哪些方法参与事务 -->  
  27.     <!--  uses AspectJ ding  AOP  -->  
  28.     <aop:config proxy-target-class="true">  
  29.         <aop:advisor  
  30.             pointcut="execution(* com.ving.xzfw.service.impl.*Service*.*(..))"  
  31.             advice-ref="txAdvice" />  
  32.     </aop:config>  

 3.(stuts2+hibernate4+spring3)

Java代码 
  1. <!-- 开启AOP监听 只对当前配置文件有效 -->  
  2. <aop:aspectj-autoproxy expose-proxy="true"/>  
  3.   
  4. <!-- 开启注解事务 只对当前配置文件有效 -->  
  5.     <tx:annotation-driven transaction-manager="txManager"/>  
  6.   
  7.    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
  8.        <property name="sessionFactory" ref="sessionFactory"/>  
  9.    </bean>  
  10.   
  11.    <tx:advice id="txAdvice" transaction-manager="txManager">  
  12.        <tx:attributes>  
  13.            <tx:method name="save*" propagation="REQUIRED" />  
  14.            <tx:method name="add*" propagation="REQUIRED" />  
  15.            <tx:method name="create*" propagation="REQUIRED" />  
  16.            <tx:method name="insert*" propagation="REQUIRED" />  
  17.            <tx:method name="update*" propagation="REQUIRED" />  
  18.            <tx:method name="merge*" propagation="REQUIRED" />  
  19.            <tx:method name="del*" propagation="REQUIRED" />  
  20.            <tx:method name="remove*" propagation="REQUIRED" />  
  21.            <tx:method name="put*" propagation="REQUIRED" />  
  22.            <tx:method name="use*" propagation="REQUIRED"/>  
  23.            <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到-->  
  24.            <tx:method name="get*" propagation="REQUIRED" read-only="true" />  
  25.            <tx:method name="count*" propagation="REQUIRED" read-only="true" />  
  26.            <tx:method name="find*" propagation="REQUIRED" read-only="true" />  
  27.            <tx:method name="list*" propagation="REQUIRED" read-only="true" />  
  28.            <tx:method name="*" read-only="true" />  
  29.        </tx:attributes>  
  30.    </tx:advice>  
  31.    <aop:config expose-proxy="true">  
  32.        <!-- 只对业务逻辑层实施事务 -->  
  33.        <aop:pointcut id="txPointcut" expression="execution(* cn.javass..service..*.*(..))" />  
  34.        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>  
  35.    </aop:config>  

 4.(mybatis+springMVC)

Java代码 
  1. <!-- ================================= 事务控制相关 ============================================= -->  
  2.     <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">     
  3.         <property name="dataSource" ref="dataSource"></property>  
  4.     </bean>     
  5.       
  6.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  7.         <tx:attributes>  
  8.             <tx:method name="delete*" propagation="REQUIRED" read-only="false"   
  9.                        rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException"/>  
  10.             <tx:method name="insert*" propagation="REQUIRED" read-only="false"   
  11.                        rollback-for="java.lang.RuntimeException" />  
  12.             <tx:method name="update*" propagation="REQUIRED" read-only="false"   
  13.                        rollback-for="java.lang.Exception" />  
  14.               
  15.             <tx:method name="find*" propagation="SUPPORTS"/>  
  16.             <tx:method name="get*" propagation="SUPPORTS"/>  
  17.             <tx:method name="select*" propagation="SUPPORTS"/>  
  18.         </tx:attributes>  
  19.     </tx:advice>  
  20.       
  21.     <aop:config>  
  22.         <aop:pointcut id="pc" expression="execution(* *.*.*(..))" />  
  23.         <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />  
  24.     </aop:config>

猜你喜欢

转载自blog.csdn.net/caisenbinbeida2009/article/details/38460447