首页 > 解决方案 > 如何在 Spring Proxy 中的 Private 方法上创建 @Trasactional

问题描述

这是代码片段。

public class A{

  public void m1(){
    //Do some stuff
    m2();
  }

 @Transactional
 private m2(){
   // Some DB operations
 }
}

在上面的代码中,@Transactional不起作用。

有没有一种方法可以让我只在私有方法上创建@Transactional (而不是在公共方法上)?

有人可以帮忙吗。

标签: springspring-boottransactionsspring-transactions

解决方案


没有保留@Transactional私有方法的目的,因为该方法最终在类本身中被调用。因此代理永远不会应用于该方法。

使用代理时,您应该仅将@Transactional注释应用于具有公共可见性的方法。如果您使用注解对受保护的、私有的或包可见的方法进行@Transactional注解,则不会引发错误,但被注解的方法不会显示配置的事务设置。


推荐阅读