使用aspectj的多个Spring事务管理

时间:2016-02-22 10:59:11

标签: java spring transactions aop aspectj

有2个交易管理器如下

<bean id="transactionManager1"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource1" />
</bean>

<bean id="transactionManager2"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource2" />
</bean>

两者都注册到AspectJ AnnotationTransactionManager,如下所示

 <bean class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" factory-method="aspectOf">
        <property name="transactionManager" ref="transactionManager1" />
    </bean>
 <bean class="org.springframework.transaction.aspectj.AnnotationTransactionAspect" factory-method="aspectOf">
        <property name="transactionManager" ref="transactionManager2" />
    </bean>

使用注释启用事务,如下所示 -

<tx:annotation-driven transaction-manager="transactionManager1" mode="aspectj" />
<tx:annotation-driven transaction-manager="transactionManager2" mode="aspectj" />

这会导致将Abstract class - &#39; org.springframework.transaction.interceptor.TransactionAspectSupport的transactionManager属性设置为服务器启动期间创建的最后一个注释事务方面bean。

但是无法在运行时使用限定符选择TransactionManager。 org.springframework.transaction.aspectj.AnnotationTransactionAspect asllow多个交易经理

0 个答案:

没有答案