Spring3.0配置多個事務管理器(即操作多個數據源)的方法


大多數項目只需要一個事務管理器。然而,有些項目為了提高效率、或者有多個完全不同又不相干的數據源,最好用多個事務管理器。機智的Spring的Transactional管理已經考慮到了這一點,首先分別定義多個transactional manager,並為qualifier屬性指定不同的值;然后在需要使用@Transactional注解的時候指定TransactionManager的qualifier屬性值或者直接使用bean名稱。配置和代碼使用的例子:

 

<tx:annotation-driven/>

<bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="datasource1"></property>
    <qualifier value="datasource1Tx"/>
</bean>

<bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="datasource2"></property>
    <qualifier value="datasource2Tx"/>
</bean>

使用時,用@Transactional("datasource1Tx")和@Transactional("datasource2Tx"),來區別具體使用某個事務管理器

public class TransactionalService {

    @Transactional("datasource1Tx")
    public void setSomethingInDatasource1() { ... }

    @Transactional("datasource2Tx")
    public void doSomethingInDatasource2() { ... }
}

 

或者,直接使用transactin manager 的bean名字:

@Transactional("transactionManager1")
如果是使用@Transactional(),相當於使用缺省的transaction mananger名字,即:@Transactional("transactionManager")
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM