這篇博客主要是爲了解決:當項目中有多個數據庫時,如何將多個數據庫區分開來,開啓一個數據庫的事務
在spring的配置文件applicationContext.xml中分別配置2個DataSource, 開啓2個事務
<!-- 配置數據源1 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${db.driverClass}"></property> <property name="jdbcUrl" value="${db.url}"></property> <property name="user" value="${db.username}"></property> <property name="password" value="${db.password}"></property> <property name="acquireIncrement" value="${db.acquireIncrement}"></property> <property name="initialPoolSize" value="${db.initialPoolSize}"></property> <property name="maxIdleTime" value="${db.maxIdleTime}"></property> <property name="maxPoolSize" value="${db.maxPoolSize}"></property> <property name="minPoolSize" value="${db.minPoolSize}"></property> </bean> <!-- 開啓註解事務和DAO --> <bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven transaction-manager="tx"/>
<!-- 配置數據源2 --> <bean id="dataSourcePd" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${dbPd.driverClass}"></property> <property name="jdbcUrl" value="${dbPd.url}"></property> <property name="user" value="${dbPd.username}"></property> <property name="password" value="${dbPd.password}"></property> <property name="acquireIncrement" value="${dbPd.acquireIncrement}"></property> <property name="initialPoolSize" value="${dbPd.initialPoolSize}"></property> <property name="maxIdleTime" value="${dbPd.maxIdleTime}"></property> <property name="maxPoolSize" value="${dbPd.maxPoolSize}"></property> <property name="minPoolSize" value="${dbPd.minPoolSize}"></property> </bean> <!-- 開啓註解事務和DAO --> <bean id="txDb2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSourceDb2"/> </bean> <tx:annotation-driven transaction-manager="txDb2"/>
應用: