spring事务失效情况分析

阅读更多

详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt113

 

一、声明式事务和注解事务并存的情况下,事务失效。

 

该情况常见配置如下:

 

<bean name="transactionManager"

    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

       <property name="dataSource" ref="dataSource">property>

    bean>

二、ControllerService层和Dao层全部使用注解生成benaService层方法也使用注解声明事,这种情况由于 @Controller 会把 关联的@Servie自动实例化,而此时Service层中声明的事务并没有被实例化,导致事务失效。

解决方法:

 

        include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>    

    

  

    

        exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/>    

   

Include:把@Controller关联的@Service自动实例化

exclude:屏蔽@Service自动实例化

三、三层都使用注解,事务也使用注解声明。事务失效

Spring 会先加载声明在xml文件中的Bean

其次是加载标签声明的包中,

声明了@Controller,@Service,@Component,@Re @Repository的类

最后是 @Transactional 标记,但上一步处理component-scan 声明的包时,类包含的@Transactional标记没有被处理,所以事务控制失效。

 

解决方法:

 

Service 层的类使用xml文件声明bean,但是事务控制仍然使用@Transactional注解来声明,事务控制才能生效

你可能感兴趣的:(spring,事务,transaction,失效,事务失效)