微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spring多个事务管理器问题

我有两个事务管理器在两个单独的spring xml文件中定义,并且它们都加载到spring上下文中

文件

   

文件

 

如果我没有为下面的服务指出任何限定符,那么将使用哪个事务管理器spring.

public class TransactionalService {

    @Transactional
    public void setSomething(String name) { ... }

    @Transactional
    public void doSomething() { ... }
}
最佳答案
从官方文档中查看11.5.6 Using @Transactional

You can omit the transaction-manager attribute in the tag if the bean name of the PlatformTransactionManager that you want to wire in has the name transactionManager. If the PlatformTransactionManager bean that you want to dependency-inject has any other name,then you have to use the transaction-manager attribute explicitly […]

由于您的任何事务管理器都没有命名为transactionManager,因此必须指定哪个事务管理器应该用于标记为@Transactional的方法.

更新:解决修改过的问题.您可以指定在@Transactional注释上使用哪个事务管理器(请参阅:@Transactional.value()):

@Transactional("transactionManager1")
//...

@Transactional("transactionManager2")
//...

但是我发现您当前的设置有几个问题:

>你定义< tx:annotation-driven />两次与不同的交易经理.我不认为这样的配置是有效的
>没有明确提供事务管理器,应该使用哪一个

我认为应该解决解决方案是定义< tx:annotation-driven transaction-manager =“transactionManager1”/>一次并使用@Transactional使用第一个管理器和@Transactional(“transactionManager2”)来使用第二个管理器.或者相反.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐