大佬教程收集整理的这篇文章主要介绍了Spring @Transactional属性可以在私有方法上工作吗?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题不是私有的还是公共的,问题是:如何调用它以及你使用哪种AOP实现!
如果你使用(默认)Spring Proxy AOP,则@transational@H_675_6@仅当调用通过代理时,才会考虑Spring提供的所有AOP功能(如)。-如果从另一个 bean 调用带注释的方法,通常就是这种情况。
@transactional@H_675_6@所以不考虑其注释。
恕我直言,你应该使用AspectJ模式而不是Spring ProxIEs来解决问题。而且AspectJ事务性方面甚至被编织成私有方法(已在Spring 3.0中进行了检查)。
你的问题的答案是否定的- @transactional@H_675_6@如果用于注释私有方法,则将无效。代理生成器将忽略它们。
在Spring手册10.5.6章中有记录:
方法可见性和 @transactional
使用代理时,应仅将@transactional@H_675_6@注释应用于具有公共可见性的方法。如果使用注释对受保护的,私有的或程序包可见的方法进行
@transactional@H_675_6@注释,则不会引发任何错误,但是带注释的方法不会显示已配置的事务设置。如果需要注释非公共方法,请考虑使用AspectJ(请参见下文)。
如果我在Spring bean的私有方法上有一个@transactional -Annotation,该注释有什么作用吗?
如果@transactional@H_675_6@注释位于公共方法上,则它将起作用并打开一个事务。
public class Bean {
public void dostuff() {
doprivatestuff();
}
@transactional
private void doprivatestuff() {
}
}
...
Bean bean = (Bean)appContext.getBean("bean");
bean.dostuff();
@H_675_6@
以上是大佬教程为你收集整理的Spring @Transactional属性可以在私有方法上工作吗?全部内容,希望文章能够帮你解决Spring @Transactional属性可以在私有方法上工作吗?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。