CGLIB动态代理demo

实现原理


继承目标类:CGLIB创建的代理类确实是目标类的一个子类。它通过字节码操作,动态生成一个继承自目标类的新类。这样,代理类就可以访问目标类的非final方法和protected及更低访问级别的成员变量,从而实现对这些方法的拦截和增强。

方法增强:在生成的子类中,对于目标类中的每个非final方法,CGLIB都会生成一个方法拦截器(由用户自定义的MethodInterceptor实现),该拦截器定义了在调用原始方法前后需要执行的附加操作,即“增强”的逻辑。这包括但不限于日志记录、事务管理、权限检查等。

动态性:强调“动态创建”是因为这个过程是在应用程序运行期间完成的,不需要手动编写每一个代理类,增加了代码的灵活性和可扩展性。

 

代码实现

注意,没有引用cglib的依赖,而是用的 org.springframework.cglib 的包,至于为什么,可能是jdk版本的关系,使用原生的cglib依赖,会报错

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

// 目标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值