【回顾】cglib动态代理和jdk动态代理的区别

动态代理在Java中扮演着重要角色,尤其在AOP(面向切面编程)中。它允许我们在不修改原有代码的情况下,为类的方法添加额外的功能。当目标类实现接口时,Spring使用JDK动态代理生成相同接口的代理类;若未实现接口,则采用CGLIB生成子类进行方法拦截。动态代理的应用包括日志、事务管理等增强操作。
摘要由CSDN通过智能技术生成

动态代理:

动态的创建一个代理类出来,创建这个代理类的实例对象,
在这个代理类里面,所有方法的调用,都是先走代理类的对象,它负责做一些代码上的增强,再去调用你原本的那个类中的方法。

比如你对一批类和它们的方法做了一个切面,定义好了要在这些类的方法里增强的代码,spring必然要对那些类生成动态代理,在动态代理中执行你定义的一些增强代码;

1、如果你的那批需要进行代理的类,是实现了某个接口的,那么Spring AOP就会使用jdk动态代理的方式,来生成一个跟你实现同样接口的代理类,构造一个实例对象出来;
2、如果你的那批需要进行代理的类,没有实现接口,就会改用cglib的方式来生成动态代理,它是生成你的类的一个子类,覆盖你的一些方法,在方法里加入增强的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值