spring IoC —— AOP的术语

1.通知(Advice)

切面有它的目的——它真正要做的工作,在AOP术语体系中,切面真正要做的工作称之为通知(advice)。

通知负责定义切面是什么和何时使用——即这个切面负责什么工作,以及何时执行这个工作。应该在方法调用前执行切面的任务?还是在方法调用后执行切面的任务?还是应该在方法调用之前和之后都执行切面的任务?还是仅仅在方法调用抛出异常时执行切面的任务?

Spring切面支持以下五种通知:

·Before——前置通知,在调用目标方法之前执行通知定义的任务;

·After——后置通知,在目标方法执行结束后,无论执行结果如何都执行通知定义的任务;

·After-returning——后置通知,在目标方法执行结束后,如果执行成功,则执行通知定义的任务;

·After-throwing——异常通知,如果目标方法执行过程中抛出异常,则执行通知定义的任务;

·Around——环绕通知,在目标方法执行前和执行后,都需要执行通知定义的任务。

2.连接点(Joinpoint)

在应用中可能有很多个机会可以应用通知,这些机会就叫做连接点。连接点类似一个插槽,通过连接点可以将切面织入到应用的执行流中。Spring仅支持方法的连接点,即仅能在方法调用前、方法调用后、方法抛出异常时以及方法调用前后这些程序执行点织入通知。

3.切点(Pointcut)

如果说通知是定义了切面的“什么”和“何时”这两个方面,那么切点就定义了“何处”。切点指定一个或者多个连接点,而通知可以通过切点接入。通常情况下可以使用明确的类名和方法名或者定义了匹配模式的正则表达式来定义切点。

如何理解连接点和切点的关系?可以通过数据库查询的概念来理解,连接点相当于数据库中的记录,而切点相当于查询条件,切点和连接点不是一对一的关系,一个切点可以匹配多个连接点。

4.切面(Aspect)

切面是通知和切点的结合。通知和切点合起来就构成了切面——它是什么,在何时和何处完成其功能。

5.目标对象(Target Object)

需要被织入横切关注点的对象,即该对象是切入点选择的对象,需要被通知的对象,从而也可称为“被通知对象”;由于Spring AOP 通过代理模式实现,从而这个对象永远是被代理对象.对谁做这件事?

6.代理对象(Spring Proxy Object)

AOP框架使用代理模式创建的对象,从而实现在连接点处插入通知(即应用切面),就是通过代理来对目标对象应用切面。在Spring中,AOP代理可以用JDK动态代理或CGLIB代理实现,而通过拦截器模型应用切面。

7.织入(Weaving)

将切面应用到目标对象从而创建一个新的代理对象的过程。这个过程可以发生在编译期、类装载期及运行期,当然不同的发生点有着不同的前提条件。譬如发生在编译期的话,就要求有一个支持这种AOP实现的特殊编译器;发生在类装载期,就要求有一个支持AOP实现的特殊类装载器;只有发生在运行期,则可直接通过Java语言的反射机制与动态代理机制来动态实现。

猜你喜欢

转载自blog.csdn.net/Milan__Kundera/article/details/82527821
今日推荐