在一个web应用程序中,我使用了不同的组件,这些组件都使用Spring 3.0.x,它们自己的DataSource
和TransactionManager
(全部使用不同的名称)。它们都包含在上下文中,通过包括它们的spring配置在内的“主”webapp。具有多个TransactionManager的Spring TransactionInterceptor
<import resource="classpath:spring-config-componentName.xml" />
在每一个我使用的声明式事务管理组件的春天CONFIGS的,通过
<tx:annotation-driven transaction-manager="transactionManager_componentName" />
启用,每个方法应该是事务I添加注释,如下所示:
@Transactional(propagation=Propagation.REQUIRES_NEW, value="transactionManager_componentName")
我遇到的问题是,我发现只有一个TransactionInterceptor
被创建,它有一个transactionManagers的引用,但没有组件本身的一个。有没有办法解决这个问题?喜欢指定TransactionInterceptor
作为bean,然后在@Transactional
注释中引用它?
我认为有可能通过在每个组件中指定一个TransactionProxyFactoryBean
并通过xml配置进行声明式transaciton管理。但这是我想避免的。
Spring文档(10.5.6.2 Multiple Transaction Managers with @Transactional)中描述的建议方法不起作用。