CDI@Transactional REQUIRES_NEW在本地方法中工作吗



CDI@Transactional(Transactional.TxType_REQUIRES_NEW)在同一个bean内部调用时工作吗:

@Transactional
public void method1() {
    for(...) {
        method2();
    }
}
@Transactional(Transactional.TxType.REQUIRES_NEW)
public void method2() {
   ...
}

我想它不起作用,因为代理无法拦截本地呼叫。在这种情况下,如果我想在一个新事务中管理方法2的每次调用,那么推荐的使用模式是什么。显而易见的是创建另一个bean,但这是我不喜欢的。

本地方法调用的拦截不适用于CDI,并且您不能将类直接注入到其自身中(循环依赖)。另请参阅同一实例中的CDI调用拦截器注释方法

自我注射问题仍然悬而未决,请参阅https://issues.jboss.org/browse/CDI-414

最新更新