CDI @Transactional(Transactional.TxType.REQUIRES_NEW)在同一个bean中调用时是否有效:
@Transactional
public void method1() {
for(...) {
method2();
}
}
@Transactional(Transactional.TxType.REQUIRES_NEW)
public void method2() {
...
}
我认为它不起作用,因为代理无法拦截本地调用。 在那种情况下,如果我想在新事务中管理method2的每个调用,那么推荐的使用模式是什么。显而易见的是创建另一个bean,但这是我不喜欢的东西。
答案 0 :(得分:4)
拦截本地方法调用对CDI不起作用,并且不能直接将类注入其自身(循环依赖)。另请参阅CDI call interceptor annotated method within same instance
自我注射问题仍然存在,请参阅https://issues.jboss.org/browse/CDI-414