@
abcbuzhiming 对 最开始想弄成一个事务管理器。大概如这中 retrun new DataSourceManager(dynamicDataSource)。
然后就会出现我在 #3 出现的那种错误。
后来我干脆就创建两个 DataSourceManager 的 bean。 比如分别指定 beanName 为 A, B。
然后在 service 层比如我用到 ADao 类。 就使用 @
Transactional(transactionManager="A", rollbackFor=xxx.class)
并在 service 层抛出相应异常,但是不能回滚。我 debug 跟断点是
TransactionInterceptor.invoke(MethodInvocation) ---->
TransactionAspectJSupport.invokeWithinTransaction(Method, Class, final InvocationCallback) ----> TransactionAspectJSupport.completeTransactionAfterThrowing(TransactionInfo, Throwable)
看到了代码执行了
txInfo.getTransactionManager().rollback(txInfo.getTransactionStatus());
这一行 。并且是正常执行(这行没有出现异常)。但是事务就是没有回滚,想不明白为什么。难道我插入数据时使用的连接,和抛出异常事务回滚时的连接不一样?