Spring版本必须是在3.x后,因为2.x里的@Transcation注解是不支持多数据源的。
3.x后我们可以通过限定名来指点,该注解采用的事务管理器。如果不指定默认会使用名为“transationManager”的事务管理器。
废话不多说,上样例:
<tx:annotation-driven/>
<bean id="transactionManager1" class="org.springframework.jdbc.DataSourceTransactionManager">
...
<qualifier value="a"/>
</bean>
<bean id="transactionManager2" class="org.springframework.jdbc.DataSourceTransactionManager">
...
<qualifier value="b"/>
</bean>
我们通过qualifier为两个transactionmanager设定了限定名,那么我们在使用注解的时候只要附上就可以了。
@Transactional("a")
public void doSomething(String name) { ... }
@Transactional("b")
public void doSomething() { ... }