码迷,mamicode.com
首页 > 编程语言 > 详细

Spring事务常见的坑

时间:2018-01-30 21:21:30      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:tproxy   mil   one   存在   log   black   app   eth   ber   

Spring的两种代理方式:JDK动态代理和CGLIB动态代理

  • JDK动态代理

若目标对象实现了若干接口,spring使用JDK的java.lang.reflect.Proxy类代理。
优点:因为有接口,所以使系统更加松耦合
缺点:为每一个目标类创建接口

  • CGLIB动态代理

若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。
优点:因为代理类与目标类是继承关系,所以不需要有接口的存在。
缺点:因为没有使用接口,所以系统的耦合性没有使用JDK的动态代理好。

 

在service内部调用增删改等包含事务操作的方法:

1.在内部调用必须获取service的代理类进行调用,不然直接调用会出现无事务现象(未经过代理,则事务无法织入,即此时调用的未普通方法,必不包含事务。)

2.获取代理对象方式:

(1)获取AopContext:

<aop:aspectj-autoproxy="true"-proxy"true"/>

((Service) AopContext.currentProxy()).callMethod(); 

(2)通过ApplicationContextjproxy=ctx.getBean(service);

proxy.callsMethod();

 

Spring事务常见的坑

标签:tproxy   mil   one   存在   log   black   app   eth   ber   

原文地址:https://www.cnblogs.com/HJrefueling/p/8274414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!