当前位置:
首页 >
spring的annotation-driven配置事务管理器详解
发布时间:2023/12/15
47
豆豆
生活随笔
收集整理的这篇文章主要介绍了
spring的annotation-driven配置事务管理器详解
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
来源:http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html
这篇文章是我从ITeye上复制来的,看了一遍,觉得很深刻,决定把他复制来,对原作者表示感谢。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文仅基于3.0+版本作为测试) 假定spring 容器中定义了两个事务管理器:transactionManagerX,transactionManagerY,分管两个数据源datasourceX和datasourceY. <tx:annotation-driven transaction-manager="transactionManagerX" /> <tx:annotation-driven transaction-manager="transactionManagerY" /> (spring容器中的定义顺序如上) 有如下应用代码: public interface TestEntityService { public void methodX(); public void methodY(); } 接口实现类1 public class TestEntityServiceImpl implements TestEntityService { @Resource private TestEntityDao testEntityDao;//实际操作的是datasourceX. @Transactional public void methodX() { testEntityDao.xxx(); testEntityDao.zzz(); } public void methodY() { } } 接口实现类2 public class AnotherTestEntityServiceImpl implements TestEntityService { @Resource private TestEntityDao anOtherTestEntityDao;//实际操作的是datasourceY. @Transactional public void methodX() { testEntityDao.mmm(); testEntityDao.nnn(); } public void methodY() { } } 假设方法methodX需要事务控制的,通常我们是直接在方法上添加@Transactional标注, 但是好像spring3.0(具体版本没弄清)之前的Transactional标注不支持区分使用哪个事务管理器。3.0之后的版本Transactional增加了个string类型的value属性来特殊指定加以区分。 例如@Transactional("aaaaa"),即显示的要求spring用id="aaaaa"的事务管理器来管理事务。该属性亦可省略(省略的话用容器中缺省的transactionManager) 对于该属性的用法做了如下测试来
| methodX()事务生效测试结果 | @Transactional ("transactionManagerX") | @Transactional ("transactionManagerY") | @Transactional ("transactionManagerZ") transactionManagerZ为未定义过的 | @Transactional |
| TestEntityServiceImpl(实际使用datasourceX) | Y | N | Y | Y |
| AnotherTestEntityServiceImpl (实际使用datasourceY) | N | Y | N | N |
| methodX()事务生效测试结果 | @Transactional ("transactionManagerX") | @Transactional ("transactionManagerY") | @Transactional ("transactionManagerZ") transactionManagerZ为未定义过的 | @Transactional |
| TestEntityServiceImpl(实际使用datasourceX) | Y | N | N | N |
| AnotherTestEntityServiceImpl (实际使用datasourceY) | N | Y | Y | Y |
总结
以上是生活随笔为你收集整理的spring的annotation-driven配置事务管理器详解的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: windows显示器颜色如何校正
- 下一篇: EL toString()功能,对象转换