直观的理解AOP就是面向切面编程。
下面我们来具体的讨论一下AOP是干什么的?
AOP是Spring的关键特性之一,是对OOP的有效补充。我们在编程中可以将一些系统性相关的编程工作独立出来,单独实现,然后可以通过配置、注解、代码等植入代码。从而避免在业务逻辑代码中混入大量的系统相关性的代码。比如权限管理、日志管理、事务处理等。
AOP 的实现原理:AOP分为静态AOP和动态AOP。静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。动态AOP是指将切面代码进行动态织入实现的AOP。Spring的AOP为动态AOP,实现的技术为: JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术) 。尽管实现技术不一样,但 都是基于代理模式 , 都是生成一个代理对象 。