12. Spring — AOP 面向切面编程

什么是 AOP

AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理 实现程序功能的统一维护的一种技术

AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍 生范型。利用AOP可以对业务逻辑的各个部分进行隔离从而使得业务逻辑各部分之间的耦合度降低,提高程序 的可重用性,同时提高了开发的效率

AOP 的作用及其优势

作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强

优势:减少重复代码,提高开发效率,并且便于维护

 

AOP 的底层实现

AOP 的底层是通过 Spring 提供的的动态代理技术实现的在运行期间,Spring通过动态代理技术动态 的生成代理对象代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强

 

AOP 的动态代理技术

Spring的动态代理技术主要两种:

常用的动态代理技术
JDK 代理 : 基于接口的动态代理技术
cglib 代理:基于父类的动态代理技术

 

JDK 代理主要是基与接口,就是说缺点是 如果没接口我就无法使用这个JDK 代理

cglib代理主要基于父类。【注意 这个不是继承  这个类似于复制 】

 

所以 Spring的底层是基于 这两个代理完成。

 

我们看着图分析一下:

 

左边的是JDK动态代理 ,基于接口的,可以看到目标对象 和 目标接口肯定是有一样的方法,然后呢 在Spring运行时,自动生成了一个代理对象,那么他也会有相同的方法,所以可以增强方法。

右边的是cglib,其实说就是说是 基于父类,其实他的原理类似于复制,就是在Spring 运行时 生成一个代理对象 ,然后里面也是有和 目标对象拥有 一 样的方法的。

 

posted @ 2021-07-19 14:26  咸瑜  阅读(41)  评论(0编辑  收藏  举报