- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
@Transactional method called from another method doesn't obtain a transaction
(4 个回答)
7年前关闭。
我正在研究如何 Spring 处理事务,我想问如果一个 @Transactional
会发生什么?带注释的方法正在调用另一个 @Transactional
同一对象实例上的注释方法?
我知道事务传播默认级别是 REQUIRED
所以如果我有 method1()
注释为 @Transactional
MyObject
的一个实例调用 method2()
(用 @Transactional
注释)我认为,在 REQUIRED
之后级别,它在 method1()
创建的同一事务上执行.
是我的推理正确还是我遗漏了什么?我不确定如果 2 @Transactional
到底会发生什么在同一个实例上调用方法。
这个怎么运作?
最佳答案
如果您调用method2()
来自 method1()
在同一类中,@Transactional
第二种方法的注解不会有任何效果,因为它不是通过代理调用,而是直接调用。仅当通过代理( Autowiring 的 bean,或以任何其他方式注入(inject)的某些实例)调用时,方法才会通过事务行为得到增强。
但一般来说,如果 method1()
和 method2()
属于不同的类,并且都用 @Transactional
注释(因此使用 REQUIRED
传播),那么它们将共享从 method1()
开始的相同事务.
关于java - 如果一个@Transactional 注释方法在同一个对象实例上调用另一个@Transactional 注释方法会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230337/
我是一名优秀的程序员,十分优秀!