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