AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。
AOP 实现分类
AOP 要达到的效果是,保证开发者不修改源代码的前提下,去为系统中的业务组件添加某种通用功能。Spring 中的 AOP 是通过动态代理实现的
动态代理
动态代理主要有两种实现方式:
- JDK 动态代理:基于接口的代理。
- CGLIB 动态代理:基于子类的代理,用于代理没有接口的类。
Spring AOP 自动选择合适的代理方式来处理切面(Aspect)。Spring AOP 默认使用 JDK 动态代理,如果目标类没有实现接口,Spring AOP 会切换到 CGLIB 动态代理。此外,你也可以明确指定使用哪种代理方式。