jdk动态代理和cglib代理区别
来源:互联网 发布:淘宝商店转让 编辑:程序博客网 时间:2024/06/05 03:33
JDK动态代理:目标对象实现了接口,默认使用此代理,通过在运行期间创建一个接口的实现类来完成对目标对象的代理
cglib代理:针对类实现代理,在运行期间生成代理对象是针对目标对象扩展的子类,所以此时要是目标对象有final方法,就不能重写覆盖了,底层依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强
如果非要使用cglib代理,可以设置proxy-target-class="true",但此时需要考虑两个问题:
1:无法通知(advise)final方法,因为他们不能重写覆盖
2:需要引入cglib二进制发行包
expose-proxy:有时候目标对象内部的自我调用将无法实现切面中的增强,如下示例:
public interface AService{
public void a();
public void b();
}
public class AServiceImpl implements AService{
@Transaction(propagation=Propagation.REQUIRED)
public void a(){
this.b();
}
@Transaction(propagation=Propagation.REQUIRES_NEW)
public void b(){}
}
此处的设置this指向目标对象,直接调用b方法将无法执行事务增强,此时修改expose-proxy=“”true” ,并且修改 ((AService)AopContext.currentProxy()).b()即可
阅读全文
0 0
- jdk动态代理和cglib代理区别
- 动态代理:JDK动态代理和CGLIB代理的区别
- 动态代理:JDK动态代理和CGLIB代理的区别
- 动态代理:JDK动态代理和CGLIB代理的区别
- jdk动态代理和cglib动态代理的区别
- jdk动态代理和cglib动态代理的区别
- java的jdk动态代理和cglib动态代理区别
- JDK动态代理和CGLIB代理的区别
- JDK动态代理和CGLIB代理的区别
- JDK动态代理和CGLIB动态代理
- JDK动态代理和CGLIB动态代理
- JDK动态代理和Cglib动态代理
- Cglib动态代理和jdk动态代理
- jdk动态代理和CGlib动态代理
- jdk动态代理和cglib动态代理
- 动态代理(JDK和CGLIB)
- JDK动态代理和CGLIB
- jdk和cglib动态代理
- Linux inotify&pthread编程机制
- caffe在中断之后的模型继续训练
- java并发实战第六章
- java并发编程的艺术(五)-----线程状态
- [SDUT](1130)数据结构上机测试1:顺序表的应用
- jdk动态代理和cglib代理区别
- vue项目优化之按需加载组件-使用webpack require.ensure
- 终极指南:为什么以太坊不仅仅一个是加密货币
- 【codevs 2273】扬帆远洋大战牧师妹酱
- 1.SQL SERVER笔记——java链接SQL SERVER
- yum-update.sh
- PAT 乙级练习题1019. 数字黑洞 (20)
- Django-uploadfile(上传图片为例)
- Hibernate入门基础