目录
什么是AOP
AOP(Aspect Oriented Programming)面向切面思想,是Spring的三大核心思想之一(AOP-面向切面、IOC-控制反转、DI-依赖注入)。
AOP(Aspect Oriented Programming)面向切面思想。Java是一个面向对象(OOP)的编程语言,当需要为多个不具有继承关系的对象引入一个公共行为时,例如日志记录、权限校验、事务管理、统计等功能,只能在每个对象里都引用公共行为,这样做不便于维护,而且有大量重复代码,AOP的出现弥补了OOP的这点不足。
给对象提供代理以控制对这个对象的访问,分为静态代理和动态代理,静态代理就是在程序运行前就已经存在代理类的字节码文件,代理类和原始类的关系在运行前就已经确定。动态代理类的源码是在程序运行期间通过JVM反射等机制动态生成,代理类和委托类的关系是运行时才确定的。JDK代理和Cglib代理两种动态代理,Spring框架在底层都集成了进去,无需担心实现动态生成代理。
Spring是如何生成代理对象的
创建容器对象的时候,根据切入点表达式拦截的类,生成代理对象。如果目标对象有实现接口,使用jdk代理。如果目标对象没有实现接口,则使用Cglib代理。然后