您的位置:首页 > 编程语言 > Java开发

Spring 下默认事务机制中@Transactional 无效的原因

2017-07-26 01:34 465 查看
Spring中 @Transactional 注解的限制

1. 同一个类中, 一个nan-transactional的方法去调用transactional的方法, 事务会失效

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调用注解方法,则通常注解是不会生效的。


在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注解对protected,private或包访问权限的方法进行修饰,尽管不会引发错误,但是带注解的方法不会显示配置的事务设置。 如果需要对非public方法添加注解,请考虑使用AspectJ(见下文)。


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

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

此文章来源:http://www.cnblogs.com/milton/p/6046699.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: