Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring多个@Transactional数据源_Java_Spring_Jpa_Transactional - Fatal编程技术网

Java Spring多个@Transactional数据源

Java Spring多个@Transactional数据源,java,spring,jpa,transactional,Java,Spring,Jpa,Transactional,在我的服务层中,我可以使用@Transactional(name=“transactionManager2”)确定如果我有多个事务管理器,我使用哪个事务管理器 您可以使用以下命令指定要与@Transactional一起使用的tx管理器: 指定属性的限定符值 交易 可用于确定目标 事务管理器,与 的限定符值(或bean名称) 特定的平台TransactionManager bean定义 例如: @Transactional("txManager1"); 或者,您可以使用更显式的Transacti



在我的服务层中,我可以使用
@Transactional(name=“transactionManager2”)确定如果我有多个事务管理器,我使用哪个事务管理器

您可以使用以下命令指定要与
@Transactional
一起使用的tx管理器:

指定属性的限定符值 交易

可用于确定目标 事务管理器,与 的限定符值(或bean名称) 特定的平台TransactionManager bean定义

例如:

@Transactional("txManager1");
或者,您可以使用更显式的
TransactionProxyFactoryBean
,这使您能够更细粒度地控制哪些对象由哪些tx管理器代理。这仍然使用注释,但它不会自动检测bean,而是在逐个bean的基础上显式配置的


这通常不是一个问题,但是拥有多个事务管理器是不明智的,除非您有很好的理由这样做。如果您发现自己需要两个tx管理器,通常最好看看是否可以使用一个。例如,如果在应用服务器中配置了两个数据源,则可以将这两个数据源合并到一个JtaTransactionManager中,而不是两个独立的
JpaTransactionManager
datasourceTransactionManager

更多关于需要多个事务管理器的信息。您可能试图按顺序执行嵌套或单独的事务,然后可以使用不同的传播设置。您可以使用单事务管理器进行配置,请参见。

为什么您认为您需要两个事务管理器?请评论我在@skaffman的帖子,如果我使用DataSourceTransactionManager,如何将两个数据源关联到同一个事务管理器?@skaffman,我正在使用jdbc模板和org.apache.commons.dbcp.BasicDataSource,我应该如何让transactionManager用于两个数据源?谢谢again@tsunade21:你提出了一个新问题。