Spring 事务简化配置

在 spring 中,  事务管理一般是通过声明一个 txProxyTemplate,  然后业务 bean 中 parent = "txProxyTemplate",  这样做未免显得有些繁琐,  并且如果业务 bean 还需要其他拦截器,  配置也不太方便,  下面贴出我的配置, 用 DefaultAdvisorAutoProxyCreator 实现自动代理 

Java代码   收藏代码
  1. <beans>  
  2.     <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->  
  3.     <bean id="transactionManager"  
  4.           class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  5.           <property name="sessionFactory">  
  6.               <ref bean="sessionFactory"/>  
  7.           </property>  
  8.     </bean>     
  9.       
  10.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
  11.         <property name="transactionManager" ref="transactionManager"/>  
  12.         <property name="transactionAttributeSource">  
  13.           <value>  
  14.             com.skyon.user.manager.UserManager.*=PROPAGATION_REQUIRED  
  15.             #Add new defines here ->  
  16.           </value>  
  17.         </property>  
  18.     </bean>  
  19.       
  20.     <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">  
  21.         <property name="interceptorNames">  
  22.             <list>  
  23.                 <value>transactionInterceptor</value>  
  24.                 <!--  
  25.                 增加新的 Interceptor  
  26.                 -->  
  27.             </list>  
  28.         </property>  
  29.     </bean>  
  30.   
  31.     <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">  
  32.       <property name="transactionInterceptor" ref="transactionInterceptor"/>  
  33.     </bean>  
  34.           
  35. </beans>  


这里利用 DefaultAdvisorAutoProxyCreator 实现了对容器中所有 bean 的自动代理,  增加一个需要事务的业务 bean 时只要在 transactionInterceptor 增加一行即可,  增加别的 interceptor 也非常方便, 
极大减少了配置量

猜你喜欢

转载自langzhiwang888.iteye.com/blog/1545539