Spring的class级别的@Transactional适用于哪些方法?

Spring's @Transactional on class level applies to what methods?

我有一个 class 有几种方法。有些是 public,有些不是。请参阅下面的示例。

什么方法将在事务上下文中执行? 只有 public 个?

我在 documentation 中找不到答案。

@Transactionl
public class A {
  public void pub() {...}
  void pack() {...}
  protected void prot() {...}
  private void pri() {...}
}

是的,只有 public 方法会显示事务设置。如果您将 @Transactional 注释放在私有、受保护或包可见的方法上或放在具有此类方法的 class 上,则不会引发任何错误,只是您的事务设置不会为这些方法执行。

因此在您的情况下,交易将仅通过此方法打开:

public void pub() {...}

可以找到文档 here