项目设置:Spring 3.0.5 / JPA 2 / Hibernate / @Transactional
我们使用几个不同的数据源(因此也使用不同的事务管理器),但有共同的服务基类,因为很多功能都被重用了。
所以我们认为我们可以通过使用自定义注释来解决这个问题。我们在一个抽象基类中定义所有方法,并为每个事务管理器创建一个空的实现类。
现在的问题是:
在AbstractFallbackTransactionAttributeSource
中,这是正在执行的查找:
TransactionAttribute txAtt = findTransactionAttribute(specificMethod);
// ...
// Second try is the transaction attribute on the target class.
txAtt = findTransactionAttribute(specificMethod.getDeclaringClass());
首先检查方法,然后检查声明该方法的类(及其祖先)。但是在我们的上下文中,自定义注解位于一个子类中,不能通过向上找到。
那么我们该如何解决这个问题呢?
【我在Spring社区论坛也问过这个问题】