持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
之前的几篇文章中我们或多或少地提到了Aspect。但是没有做具体的介绍,只是说,Aspect 之于AOP,就相当于class 之于OOP。现在我们来正式介绍一下Aspect。
什么是Aspect
Aspect 的中文含义是“方面,特色;朝向,方位;外表,外观”。在Spring 中,我们将其翻译成“方面”,或者“切面”。
Aspect 是对开发者想在PointCut 中织入的逻辑的模块化的封装,在Spring 中被称作Aspect。我们通常可以在一个Aspect 中包含多个Pointcut 以及相关Advice 的定义。
织入的概念的介绍
在Spring 中,织入的动作的英文是Weaving。织入的内部操作本质就是将AOP 和OOP 的功能联系到一起。只有经过织入的过程,以Aspect 模块化的横切逻辑才会集成到OOP 的业务系统中去。
什么是织入器
基于“织入”的概念,我们知道,织入其实就是一个动作,完成织入这个动作的工具就是“织入器”。
对于AspectJ 来说,它有个专门的“织入器”。用来完成上述的“织入”动作。这个织入器就是ajc。在Spring 中,是使用一组“类”来实现织入器的功能的。在Spring 中,最通用的织入器就是通过ProxyFactory 来完成的。当然,我们可以顺势想到,在不同的平台中,一定会存在不同的织入器的实现。但是这些对于我们开发者来说都是透明的。我们只需要知道织入器的职责就是负责继承AOP 和OOP 系统的即可。
什么是目标对象
目标对象比较好理解,就是符合PointCut 的条件,被织入切面逻辑的对象。
总结
这篇文章介绍了Aspect、织入、目标对象的三个概念,这三个概念不难,还是比较容易理解的。理解了概念才是更好的开发的基础。