AOP详解-CGLIB实现AOP
1. 动态代理实现 AOP 的缺陷
- Java 动态代理是基于接口的,有时目标对象并没有实现接口
2. CGLIB 实现代理的原理
- 动态代理实现 AOP: 针对目标类,使用动态代理实现 AOP 需要再写一个增强的接口,让目标类实现增强接口,然后就可以通过动态代理实现目标类的增强
- CGLIB 实现 AOP: CGLIB 会动态创建一个目标类的子类,然后返回子类的对象,也就是增强对象,增强的逻辑在子类中完成
目标子类 = 目标类 + 增强逻辑
CGLIB 使用动态字节码技术,通过转换字节码生成新的类来实现改变一个类的内部逻辑
3. 使用 CGLIB 实现 AOP
- 实现步骤:
- 首先实现一个 MethodInterceptor,方法调用会被转发到该类的 intercept() 方法
- 在需要使用 SomeService(目标对象)时,通过 CGLIB 动态代理获取代理对象