我有一个使用@Transactional 注释进行注释的方法。
问题是,代码运行所针对的数据源是可以改变的!简而言之,是否可以在应用程序运行时更改事务的数据源?
深度: 该应用程序允许用户选择一个数据库来运行 sql。他们可以在运行时更改数据库。我希望应用程序在事务中运行所有 sql - sql 组始终针对同一数据源,所以这不是问题。
问题是,我不知道如何更改事务以使用不同的数据源。不同的文章建议使用 JTATransactionManager,但我们在 tomcat 上,所以没有骰子。
是否有一种简单的方法可以做到这一点,或者我们是否需要放弃 @Transactional 注释并做其他事情?
如果是这样,那“其他东西”是什么?
哦,数据库是db2,如果有什么用的话!
谢谢!
最佳答案
可能的解决方案之一
在spring config中配置所有可能的数据源
一个。 DB1 的数据源 1 b.用于 DB2 等的数据源 2.
在服务类中维护上述数据源的映射,并根据映射中的某些键从选定的数据源中创建 spring 的 JDBCTemplate。
关于Spring 3、TransactionManagement、Tomcat 和更改数据源 midflight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661538/