通过一个代理调用一个方法,而该代理内部使用另一个带有Transactional注释的方法,会为后一个方法创建事务吗



示例:

class Example {
@Inject
Bee b; // proxy
public void exec() {
b.exec();
}
class Bee {
public void exec() {
exec2();
}
@Transactional
public void exec2() {}
}

正如我最近注意到的,这是行不通的。我说得对吗?你有一些链接到说明这种行为的文档吗?海事组织这一案件将来可以处理,因为凭直觉,它似乎应该起作用。

CDI规范的相关部分是第7.2节(容器调用和拦截(。由于exec2()不是通过上下文引用调用的,因此它的调用不构成业务方法调用。由于它不是业务方法调用,因此不会调用负责实现@Transactional规定的行为的拦截器。

最新更新