在一個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)中描述的建議方法不起作用。