spring核心-CGLIB动态代理应用及理解案例

本文介绍了CGLIB动态代理的原理,强调了它在目标对象未实现接口时的应用场景。CGLIB代理不适用于final类或final方法,但可以作为无接口目标对象的代理方案。文中通过案例展示了如何在运行时动态生成目标对象的子类,讲解了实现这一功能所需引入的依赖和代码实现。
摘要由CSDN通过智能技术生成

概述:
cglib代理,就是运行时期对目标对象生成子类实现的代理:

  1. 要求目标对象不能为final,否则报错。
  2. 如果目标对象方法为final/static, 运行不报错,但不会被代理拦截,会直接调用目标对象的方法。
  3. cglib代理使用场景
    1. 目标有实现接口,最好使用jdk代理。
    2. 目标对象没有实现接口,最好使用cglib代理。
    3. cglib代理
      1. 可以应用于目标对象没有实现接口
      2. 目标对象有实现接口,也可以使用cglib代理。
        案例:
        需求:在运行时期,动态生成目标对象的子类。
        分析:
  4. 需要引入cglib支持包,spring-core核心包中已经包含了cglib的功能。所以引入spring-core就可以
  5. 目标对象不实现接口(可选)
  6. 测试
    实现代码:
    package com.itheima.proxy.c_dynamic_cglib;
    
    import org.springframework.cglib.proxy.Enhancer;
    import org.springframework.cglib.proxy.MethodInterceptor;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值