Sea*_*oyd 5 java spring spring-aop spring-transactions spring-orm
项目设置: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());
Run Code Online (Sandbox Code Playgroud)
首先检查方法,然后检查声明该方法的类(及其祖先)。但在我们的上下文中,自定义注释驻留在子类中,无法通过向上查找来找到该子类。
那么我们该如何解决这个问题呢?
【这个问题我也在Spring社区论坛问过】
目前,我们通过提供以下方式解决了这个问题
AnnotationTransactionAttributeSource
首先查找目标类,然后委托给超类BeanFactoryPostProcessor原始 bean 定义的实现AnnotationTransactionAttributeSource<tx:annotation-driven>。
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |