Spring中的AOP
Posted 一天睡20个小时
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中的AOP相关的知识,希望对你有一定的参考价值。
Spring中的AOP
文章目录
AOP概述
AOP(Aspect Programming) 是一种设计思想,是面向切面编程思想
跟OOP(面向对象编程)有什么关系呢?
AOP面向切面编程然后是OOP(面向对象编程)的补充和完善。
OOP是纵向继承机制
AOP是横向抽取机制
可以把分核心业务代码抽取出来
为什么叫切面编程呢?
那是我们把一些非核心业务代码抽取出来之后,我们要把它交个一个切面类来进行管理,不是把它抽取出来的,我们还有把它套到我们当前真正实现功能的位置。
AOP是干嘛的?
抽:我们要把非核心代码,封装到当前的切面类进行管理
套:把我们当前抽取出来的代码,套用到我们当前抽取出来的位置
我们就可以达到一个不修改源代码情况下给程序动态统一添加额外的功能
相关术语
①横切关注点
从每个方法中抽取出来同一类非核心业务,在同一个项目中,我们可以使用多个横切关注点对相关对方法进行多个不同的方面增强(就是从核心代码中抽取出来的非核心业务代码)
②通知
我们要把横切关注点收集到一个类中,或者说我们把横切关注点封装到一个类中,这个类就叫切面,而这个切面里面所封装的每一个横切关注点他都是一个通知(你的非核心业务代码它在我们的目标对象中叫横切关注点,你把它抽出来之后放在一个切面类来进行封装,那我的横切关注点在切面中他就表示为一个通知方法,)
横切关注点
:横切关注点是对于我们的目标对象的非核心业务代码来说的
通知
:通知是针对于,我要把横切关注点封装在我们的切面中,而在这个切面中每一个横切关注点他都表示为一个通知方法
切面
:封装横切关注点的类叫切面(也可以说封装通知方法的类叫切面)
目标对象
:指的是当前的目标对象,我们需要进行功能增强的对象,也就是我们要抽取非核心代码的对象
代理
:就是为当前目标对象所创建出来的代理对象(在AOP中代理对象不需要我们自己创建,以为它封装的就是代理模式)
连接点
:就是抽取横切关注点的位置(就是说你的横切关注点在哪抽出来的)
切入点
:定位连接点的方式(连接点是一个纯概念的问题,把非核心代码抽出来,我还得把它套到当前抽取出来的为位置(连接点),我们就可以通过切入点定位我们的连接点)
总结
目标类肯定是有的,代理类它要做的事情,从目标对象中把非核心业务代码,也就是横切关注点抽取出来,放在一个类中,这个叫切面。每一个横切关注点都是一个方法,这个方法叫通知。我们要在不改变源代码的基础上来做功能增强,我们不光要抽取出来,还得套到目标对象上,所以我们在哪抽的,就要套在哪里,这个位置叫连接点。连接点只是一个概念,通过切入点定位连接点。
作用
-
简化代码:把方法中固定位置的重复代码抽取出来,让被抽取的方法更专注于自己的核心功能
-
代码增强:在不改变源代码的基础上,然后进行把这个切面套到我们的目标对象的方法的执行过程中
以上是关于Spring中的AOP的主要内容,如果未能解决你的问题,请参考以下文章