spring注解使用的默认事物管理器

https://stackoverflow.com/questions/27239007/which-is-the-default-transaction-manager-the-transactional-uses

 

 

spring  默认事物管理器

 

未有答案和文档资料说明。。

 

<tx:annotation-driven transaction-manager="transactionManager2"/>  

  <tx:annotation-driven transaction-manager="transactionManager"/> 

事物代码测试和代码调试发现

只有第一个配置有效

扫描二维码关注公众号,回复: 284640 查看本文章

代码调试:

spring-tx-3.2.1.RELEASE.jar

package org.springframework.transaction.config

AnnotationDrivenBeanDefinitionParser

入口:77行 parse 方法

打断点会调试会进入2次,

第一次element的是transactionManager2

然后会调用AopAutoProxyConfigurer.configureAutoProxyCreator(element, parserContext);

!parserContext.getRegistry().containsBeanDefinition(txAdvisorBeanName) 为true

调用registerTransactionManager(element, interceptorDef);  注册为transactionManager2

第二次element的是transactionManager,但是       !parserContext.getRegistry().containsBeanDefinition(txAdvisorBeanName) 为false

直接跳出if代码块了

总结:配置多个tx:annotation-driven,只有第一个有效

 

猜你喜欢

转载自zhouchaofei2010.iteye.com/blog/2397588
今日推荐