Spring应用学习——AOP
1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就是在每一个业务逻辑的代码中都会有相同的代码围绕业务逻辑代码,而AOP就是将这些重复代码抽取出 2. AOP实现原理:就是代理模式,主要有两种方式,分别是静态代理和动态代理, 静态代理:采用一些工具类对原来的类生成一个代理类,代理类以.class存在 动态代理(重点,spring基于动态代理实现aop):在运行中,通过反射生成类的代理对象,在代理对象中对原来的对象进行增强。 3. spring采用动态代理的技术实现包括: 基于接口生成动态代理对象:使用jdk提供的反射机制实现,参考这篇博客, JDK动态代理实现详解 基于类生成动态代理对象:通过继承实现,根据类生成一个子类(代理对象),在代理对象(子类)中对父类进行增强,参考 这篇博客 。实现 cglib通过继承的形式来实现动态功能的代理 那么就无法避免一些继承的缺点,那就是无法代理final方法和无法代理final类,示例使用代码如下 import java.lang.reflect.Method; import org.springframework.cglib.proxy.MethodInterceptor; import org