首先,切面是什么结构?以一张纸为例,一张纸就是一个切面,切面就是一个面,简单易懂。
那么我们为什么要面向切面呢?我们需要看到切面有什么特性。面有哪些特性呢?它是一个数学几何概念,表示的是一个空间上的概念,它有前有后,借助它我们可以描述出在它周围的空间的性质。
对于我们编程有什么意义呢?如果我们把函数看作是切面上的点,那么我们就可以发现,它们的前面和后面都是一样的,与整个切面相同。换句话说,它的前面和后面,是我们复用的空间。举例,一个面包把它切成三片,中间那片是我们的切面,对其中的所有面包屑来说,它前面的面包都是同一片,后面的也一样。
编程中的切面就是这样的一种东西,它不是天然存在的,而是我们人为定义出来的,是我们为了程序代码的复用性,“切”出来的面。而程序的执行,可以看作是一只蚂蚁试图通过一片面包的过程。它在程序的空间结构上可以分为:切面前,前面后,试图通过切面但是失败了到达的异空间,和程序执行结束后共享的空间。是不是很熟悉,这就是一个try。。catch。。结构。在Spring中,他们被称为前置(before)、后置(after-returning)、异常(after-throwing,其实我觉得翻译成抛出更合适)、最终(after),而整个切面空间,则被成为环绕(around)。
那么具体怎么实现的呢?我们先要分析AOP过程中的做了哪些事,首先它进入了切面空间,然后它根据切面描述的前后空间来进行增强代码,把切面周围需要复用的代码拷一份给
Spring中面向切面AOP
本文介绍了Spring中的面向切面编程(AOP)概念,通过面包和蚂蚁的比喻阐述了切面的含义和作用。切面提供了一种代码复用的机制,类似于程序执行的try...catch结构。Spring使用动态代理实现AOP,InvocationHandler作为顾问指导对象如何穿越切面。切入点定义了需要增强的方法,Spring通过AOP标签和顾问确定增强策略,实现低耦合和高复用。
摘要由CSDN通过智能技术生成