+-
Spring AOP

Spring AOP简介

1.1 AOP概述

AOP是一种设计思想,是软件设计领域中的面向切面编程,它是面向对象编程(OOP)的一种补充和完善。它以通过预编译方式和运行期动态代理方式 ,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术。

1.2 AOP遵循的原则

AOP基于OCP(开闭原则):在不改变原有系统核心业务代码的基础上动态添加一些扩展功能并可以“控制”对象的执行。例如AOP应用于项目中的日志处理,事务处理,权限处理,缓存处理等等。

1.3 Spring AOP应用原理分析

Spring AOP底层基于代理机制(动态方式)实现功能扩展:
1)JDK代理:假如目标对象(被代理对象)实现接口,则底层可以采用JDK动态代理机制为目标对象创建代理对象(目标类和代理类会实现共同接口)
2)CGLIB代理:假如目标对象(被代理对象)没有实现接口,则底层可以采用CGLIB代理机制为目标对象创建代理对象(默认创建的代理类会继承目标对象类型)

1.4 Spring AOP相关术语分析

①切面(Aspect):横切面对象,一般为一个具体类对象(可以借助@Aspect声明)。
②通知(Advice):在切面的某个特定连接点上执行的动作,例如around,before,after等。
③连接点(joinpoint):程序执行过程中某个特点的点,一般指向被拦截到的目标方法。
④切入点(pointcut):对多个连接点一种定义,一般可以理解为多个连接点的集合。