AOP的定义和原理

一、本课目标

  • 理解Spring AOP的原理
  • 掌握Spring AOP的七个术语

二、面向切面编程(AOP)

 AOP的思想是,不去动原来的代码,而是基于原来代码产生代理对象,通过代理的方法,去包装原来的方法,就完成了对以前方法的增强。换句话说,AOP的底层原理就是动态代理的实现。
 
image.png

在上面这个图中的代码中,业务代码就红框中的那些,其他的代码都是做一些其他的事情,但是这些代码还不得不写,并且这些代码散布在我们系统的各处。我们把这样的的代码叫做横切逻辑,也叫横切关注点;把我们的业务代码叫做核心关注点。但是我们构建系统的目的是为了解决业务问题,现在却要维护多个方面的事情,怎么样才能“专心”做事情?这就是AOP的目标:让我们“专心做事”。

2.1AOP原理

第一、将复杂的需求分解出不同的方面,将公共功能集中解决。

 
image.png

 

在上图中,中间的是我们的代码,AOP就是将这些分离,包括权限,日志和持久化等等。

第二、采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能

 
image.png

综上、所谓面向切面编程,是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术。

2.2AOP相关术语

1、增强处理:前置增强、后置增强、环绕增强、异常抛出增强、最终增强等类型
2、切入点
3、连接点
4、切面
5、目标对象
6、AOP代理
7、织入

1、增强处理

 
image.png

2、切入点

通过一个表达式告诉SpringAOP去哪个地方进行增强。也可以把这个表达式理解为一个查询条件,系统会根据这个查询条件查询到我们要进行增强的代码位置。

3、连接点

就是SpringAOP通过告诉它的切入点的位置找的的具体的要增强的代码的位置,这个代码位置就是连接点。

4、切面

切面由一组(增强处理和切入点)共同构成。

5、目标对象

目标对象就是被增强的目标类。我们也称之为委托类。

6、AOP代理

 
image.png

 

代理类就是AOP代理,里面包含了目标对象以及一些增强处理。系统会用AOP代理类代替委托类去执行功能。

7、织入

织入就是将我们的增强处理增强到指定位置的过程。

posted @ 2019-09-18 19:32  飘飘雪  阅读(10954)  评论(0编辑  收藏  举报