Spring 下默认事务机制中@Transactional 无效的缘由

Spring中 @Transactional 注解的限制
1. 同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效html

If you use (default) Spring Proxy AOP, then all AOP functionality provided by Spring (like @Transational) will only be taken into account if the call goes through the proxy. -- This is normally the case if the annotated method is invoked from another bean. 若是使用(默认)Spring Proxy AOP,那么Spring提供的全部AOP功能(如@Transational)只有在经过代理类调用时才被考虑。 - 若是从普通的bean调用注解方法,则一般注解是不会生效的。
  1. 在private方法上标注transactional, 事务无效
When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.
使用代理时,应将@Transactional注解应用于具备public方法。 若是使用@Transactional注解对protectedprivate或包访问权限的方法进行修饰,尽管不会引起错误,可是带注解的方法不会显示配置的事务设置。 若是须要对非public方法添加注解,请考虑使用AspectJ(见下文)。

这里有一个详细的说明 http://stackoverflow.com/questions/4396284/does-spring-transactional-attribute-work-on-a-private-methodweb

相关博客:@Transactional 无效的解决方案spring

此文章来源:http://www.cnblogs.com/milton/p/6046699.htmlapp

相关文章
相关标签/搜索