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