博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AOP术语
阅读量:6314 次
发布时间:2019-06-22

本文共 1355 字,大约阅读时间需要 4 分钟。

1.连接点(Joinpoint)

程序执行的某个特定位置:如类开始初始化前,类初始化后,类某个方法调用前,调用后,方法跑出异常后。一个类或一段程序代码拥有一些具有边界性质的特定点、这些代码中的特定点就成为连接点。

Spring仅支持方法的连接点,即仅能在方法调动前,方法调用后,方法跑出异常时以及方法调用前后这些程序执行点织入增强。

连接点由两个信息确定:

1)方法表示程序执行点

2)用相对点表示的方位。

如在Test.foo()方法执行前的连接点,执行点为Test.foo(),方位为该方法执行前的位置。

 

2.切点(Pointcut)

每个程序类都拥有多个连接点,如一个拥有两个方法的类,这两个方法都是连接点,即连接点是程序类中客观存在的事物,但在这些连接点中,如何定位到某个感兴趣的链接点上呢??AOP通过“切点”定位特定连接点。通过数据库查询的概念来理解切点和连接点的关系是:连接点相当于数据库中的记录,而切点相当于查询条件。

切点和连接点不是一对一关系,一个切点可以匹配多个连接点。

在Spring中,切点通过org.springframework.aop.pointcut接口进行描述,它使用类和方法作为连接点的查询条件,SpringAOP的规则解析引擎负责解析切点所设定的查询条件,找到对应的连接点。

3.增强:(Advice)

增强就是植入到目标类连接点上的一段程序代码。在Spring中,增强除用于描述一段程序代码外,还拥有另一个和连接点相关的信息,这便是执行点的方位。结合执行点方位信息和切点信息,我们可以找到特定的连接点了。

正因为增强包含了用于添加到目标连接点上的一段执行逻辑,又包含了拥有定位连接点的方位信息,所以Spring所提供的增强接口都是带方位名的:BeforeAdvice、AfterRetuningAdvice、ThrowAdvice等。BeforeAdvice表示方法调用前的位置,而AfterRetuningAdvice表示访问返回后的位置。

4.目标对象Target

增强逻辑的植入目标类,如果没有AOP,目标业务类需要自己实现所有逻辑。

5.引介(Introduction)

引介是一种特殊的增强,它为类添加一些属性和方法。这样即使一个业务类原本没有实现某个接口,通过AOP的引介功能,我们可以动态地位该业务类添加接口的实现逻辑,让业务类成为和这个接口的实现类。

6.织入(Weaving)

织入是将增强添加对目标类具体链接点上的过程,AOP像一台织布机,将目标类、增强或者引介通过AOP这台织布机天衣无缝的编制在一起。

AOP的织入方式:

1)编译期织入,这要求使用特殊的Java编译器

2)类装载器织入,这要求使用特殊的类装载器

3)动态代理织入,在运行期为目标类添加增强生成子类的方式。

7.代理(Proxy)

一个类被AOP织入增强后,就产生一个结果类,它是融合了原类和增强逻辑的代理类。根据不同的代理方式,代理类既可以是和原类具有相同接口的类,也可能是员类的子类。

8.切面(Aspect)

切面由切点和增强组成,它既包括横切逻辑的定义,也包括连接点的定义,Spring AOP就是负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中。

转载地址:http://dvxxa.baihongyu.com/

你可能感兴趣的文章
一个简易的C#信息展示板
查看>>
iOS中多线程原理与runloop介绍
查看>>
CentOS下的su 设置
查看>>
CentOS7安装Docker,运行Nginx镜像、Centos镜像
查看>>
基于MicroPython的TPYBoard超声波倒车雷达系统
查看>>
需要什么食物,其实取决于肠道微生物?
查看>>
一些通用的控制
查看>>
solr死锁问题升级版脚本
查看>>
UILabel的学习
查看>>
JAVA程序员面试技巧
查看>>
L2TP ××× 服务器搭建和使用
查看>>
电脑监控专家 管理原来如此轻松
查看>>
关于布局xml文件中view的id重复的问题
查看>>
[转载] 全本张广泰——第六回 大爷起歹心 白犬换广泰
查看>>
Java heap space 问题查找
查看>>
iperf使用
查看>>
openstack I版的搭建三--Nova
查看>>
子网划分
查看>>
BZOJ 2186 [Sdoi2008]沙拉公主的困惑
查看>>
Django之windows平台篇
查看>>