一、简介
AOP(Aspect Orient Programming),即面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理。
Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。
1.通知(有的地方叫增强)(Advice)
需要完成的工作叫做通知,就是你写的业务逻辑中需要比如事务、日志等
2.连接点(Join point)
就是spring中允许使用通知的地方
3.切点(Poincut)
筛选出的连接点,一个类中的所有方法都是连接点,但又不全需要,会筛选出某些作为连接点做为切点。
4.切面(Aspect)
通知和切点的结合,通知和切点共同定义了切面的全部内容
5.目标(target)
需要加入额外代码的对象
6.织入(Weaving)
把切面加入程序代码的过程。切面在指定的连接点被织入到目标对象中,在目标对象的生命周期里有多个点可以进行织入
编译期:切面在目标类编译时被织入,这种方式需要特殊的编译器
类加载期:切面在目标类加载到JVM时被织入,这种方式需要特殊的类加载器,它可以在目标类被引入应用之前增强该目标类的字节码
运行期:切面在应用运行的某个时刻被织入,一般情况下,在织入切面时,AOP容器会为目标对象动态创建一个代理对象,Spring AOP就是以这种方式织入切面的
二、流程
新建spring boot