源码分析设计模式之代理模式(四、动态代理模式之 CGLIB 动态代理)

本文介绍了CGLIB动态代理如何利用底层字节码技术,通过创建子类并拦截父类方法,实现代理并提供方法增强功能,适合那些无法通过接口代理的类。实战演示了从UserServiceImpl到Proxy的实现过程,并总结了CGLIB的优势和适用场景。
摘要由CSDN通过智能技术生成
一、CGLIB 动态代理

静态代理和 JDK 动态代理模式有个相同的特点就是都是依靠接口实现的,然而并不是所有的类都有接口的,这个时候就用不了 JDK 动态代理了,CGLIB 动态代理就可以闪亮登场了

CGLIB 动态大力采用了非常底层的字节码技术,其原理是通过字节码技术在内存中为一个类创建子类,并在子类中采用方法拦截的方式拦截所有父类方法的调用,顺势织入横切逻辑,实现方法增强

二、CGLIB 动态代理实现步骤
  • 查找 A 类上的所有非 final 的 public 类型的方法定义
  • 将这些方法的定义转换成字节码
  • 将组成的字节码转换成相应的代理的 class 对象
  • 实现 MethodInterceptor 接口,用来处理对代理类上所有方法的请求
    这个接口和 JDK 动态代理中的 InvocationHandler 接口功能和角色是一样的
三、实战演示
真实角色
public class UserServiceImpl {
   
    public void select() {
   
        System.out.println("查询了一个用户");
    }
}
代理类
public class Proxy implements MethodInterceptor {
   
    private  Object target;							// 聚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值