1)有什么不同吗
@Transactional
方法内部调用非事务性方法
Transactional
的 @
SUPPORTS
方法?2)如果是相同的bean还是不同的,第一个问题的答案有什么区别吗?
谢谢
i) 有什么不同吗,
1) 如果我从@transactional 内部调用非事务方法并且
如果在事务中调用方法,没有任何设置,事务将跨越调用方法。
2) 调用@transactional,传播级别=来自相同@transactional方法的支持?
Propagation.SUPPORTS
带注释的方法将在当前事务中执行,就像调用非事务方法一样。
设置
@Transactional(propagation = Propagation.SUPPORTS)
和不设置 @Transactional
之间的唯一区别在 javadoc 中注明:
注意:对于具有事务同步的事务管理器,PROPAGATION_SUPPORTS 与根本没有事务略有不同,因为它定义了同步将应用的事务范围。因此,相同的资源(JDBC 连接、Hibernate 会话等)将在整个指定范围内共享。请注意,这取决于事务管理器的实际同步配置。
ii) 如果回答问题 i) 是相同的豆还是不同的豆,有什么区别吗?
Spring
@Transactional
注解默认使用AOP代理。
当您在同一个类中从
methodB
调用 methodA
时,不会为 methodB
激活 AOP 代理(即 @Transactional
中的 methodB
注解被完全忽略)。
当您从不同的班级调用时,行为与
i)
相同