当方法使用@Transactional注解时会发生什么?创建代理的必要性是什么?

10 浏览
0 Comments

当方法使用@Transactional注解时会发生什么?创建代理的必要性是什么?

这个问题已经有了答案:

Spring - @Transactional - What happens in background?

当方法被注释为@Transactional时会发生什么?@Transactional仅在方法包含数据库操作时才被调用,创建代理的需要是什么?

我在面试中多次被问到这个问题,但是在阅读各种博客的答案后没有得到任何澄清。

admin 更改状态以发布 2023年5月21日
0
0 Comments

@Transactional - 当这个注释被声明在类级别时,它将作为默认值应用于声明类和其子类的所有方法。请注意,它不适用于类层次结构中的祖先类; 继承的方法需要在本地重新声明才能参与子类级别的注释。有关方法可见性约束的详细信息,请参阅参考手册中的事务管理部分。

请参见

0
0 Comments

事务注解向Spring发出信号,要求在创建的bean周围创建代理。Spring在幕后使用AOP将事务相关的活动委托给底层TransactionManager。无论您实际上是否在方法中使用DB访问,AOP代码都将被调用。
话虽如此,但存在关于事务方法自我调用的问题,但这是Spring Syle AOP的缺点。

我建议您查看Spring代理,在哪些情况下将创建代理对象以及何时不创建代理对象,并对AOP有一个通用的感觉,因为在Spring中它被广泛使用幕后。

0