spring transaction失效的几种情况

1.首先检查配置,在项目的spring配置文件检查是否配置开启事务:

 

  1. <bean id="transactionManager"  
  2.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  3.     <property name="dataSource" ref="routeDataSource" />  
  4. bean>  
  5.   
  6.   
  7. <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />  

2.同一个类中, 一个未标注@Transactional的方法去调用标有@Transactional的方法, 事务会失效

If you use (default) Spring Proxy AOP, then all AOP functionality provided by Spring (like @Transational) will only be taken into account if the call goes through the proxy. -- This is normally the case if the annotated method is invoked from another bean.

3:在非public方法上标注@Transactional, 事务无效

 

When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private 

or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured

 transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.

 

   
   
       
   

 

你可能感兴趣的:(transaction,IT)