java - 通过代理调用方法,该代理使用内部带有 Transactional 注释的另一个方法,是否会为后一种方法创建事务?
问题描述
例子:
class Example {
@Inject
Bee b; // proxy
public void exec() {
b.exec();
}
class Bee {
public void exec() {
exec2();
}
@Transactional
public void exec2() {}
}
正如我最近注意到的那样,这行不通。我对吗?您是否有一些指向说明该行为的文档的链接?IMO 这种情况可以在未来处理,因为从直觉上看它应该可以工作。
解决方案
CDI 规范的相关部分是第 7.2 节(容器调用和拦截)。由于exec2()
不是通过上下文引用调用的,因此它的调用不构成业务方法调用。由于它不是业务方法调用,因此不会调用负责实现 by 规定的行为的拦截器@Transactional
。
推荐阅读
- javascript - ShuffleJS 无法读取 null 的属性“textContent”
- sas - 使用 proc sql 对数据集进行多次求和
- visual-studio - Visual Studio 中的conhost.exe 进程重复 无法关闭主机
- java - 我可以在同一模型中与 JpaRepository 一起使用 redis 吗?
- python - 如何在python中遍历二维数组中的每个元素?
- c# - 用于从字符串中提取特定编号模式的 C# 正则表达式
- node.js - AWS Lambda 在使用 Promise.all() 时返回 502
- reactjs - 未生成一个元素的引导动态网格
- python - 数据帧中的线性外推
- c++ - 从文本文件中收集数据