AOP

2018-05-09  本文已影响0人  美美欣

1. AOP概念:

Aspect Oriented Programming,面向切面编程。是OOP(Object Oriented Programmign)面向切面编程的补充,OOP中是纵向关系,导致代码大量重复,不利于模块重用。
如日志功能,安全性,异常处理和 透明的持续性,往往横向的分布在所有对象层次中,且这种代码和对象的核心功能无关,这种代码被称为“横切”。
AOP技术利用可以“横切”的技术,抛开对象内部,并将影响了多个类的公共行为封装到一个可重用模块,命名为“Aspect”,即切面。便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来可操作性和可维护性。
AOP的作用在于把系统中的横切关注点从核心关注点分离出来。

1.1 横切关注点:

对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

1.2 切面(aspect)

类是对物体特征的抽象,切面就是对横切关注点的抽象

1.3 连接点(joinpoint)

被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

1.4 切入点(pointcut)

对连接点进行拦截的定义

1.5 通知(advice)

所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

1.6 目标对象

代理的目标对象

1.7 织入(weave)

将切面应用到目标对象并导致代理对象创建的过程

1.8 引入(introduction)

在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段


2. Spring对AOP对支持

Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。

2.1 Spring创建代理的规则为:

2.2 程序员只需要参与三个部分:


3. jar包

Gradle: org.springframework:spring-aop:5.0.5.RELEASE
下面包含两个文件夹: aopalliance 和 springframework.aop

未完待续...

上一篇 下一篇

猜你喜欢

热点阅读