1.AOP概述
1.1 什么是AOP
- AOP:全称是 Aspect Oriented Programming 即:面向切面编程。
- 简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。
1.2 AOP 的作用及优势
作用:
- 在程序运行期间,不修改源码对已有方法进行增强。
优势:
-
减少重复代码
-
提高开发效率
-
维护方便
1.3 AOP的实现方式
- 使用动态代理技术实现
1.4 动态代理的特点
- 字节码随用随创建,随用随加载。
- 它与静态代理的区别也在于此。因为静态代理是字节码一上来就创建好,并完成加载。
- 装饰者模式就是静态代理的一种体现。
1.5 动态代理常用的有两种方式
-
基于接口的动态代理
提供者:JDK 官方的 Proxy 类。
要求:被代理类最少实现一个接口。 -
基于子类的动态代理
提供者:第三方的 CGLib,如果报 asmxxxx 异常,需要导入 asm.jar。
要求:被代理类不能用 final 修饰的类(最终类)。