首页 > Java > java教程 > Spring 的 @Transactional 注解适用于私有方法吗?

Spring 的 @Transactional 注解适用于私有方法吗?

Barbara Streisand
发布: 2024-12-25 14:09:11
原创
307 人浏览过

Does Spring's @Transactional Annotation Work on Private Methods?

Spring 中私有方法的事务属性功效

在 Spring 中,@Transactional 注解可以划分方法的事务边界。一个常见的问题是,当将此注释应用于 Spring beans 中的私有方法时,其有效性如何。

答案很简单:@Transactional 对私有方法没有影响。这是由于 Spring 使用的代理生成器忽略了私有方法。

为了进一步说明,请考虑以下示例:

public class Bean {
  public void doStuff() {
     doPrivateStuff();
  }
  @Transactional
  private void doPrivateStuff() {

  }
}
登录后复制

尽管私有方法 doPrivateStuff() 上有 @Transactional 注解,它仍然无效并且不会修改交易行为。这种行为记录在 Spring 手册第 10.5.6 章中,其中明确指出:

“当使用代理时,您应该仅将 @Transactional 注解应用于具有公共可见性的方法。如果您注解了 protected、private或带有 @Transactional 注释的包可见方法,不会引发错误,但带注释的方法不会显示配置的事务设置...如果需要注释,请考虑使用 AspectJ。非公共方法。”

以上是Spring 的 @Transactional 注解适用于私有方法吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板