AOP(2)国家的公民
2017-07-23 本文已影响13人
远o_O
一、JoinPoint
- 在系统运行之前,AOP的功能模块都需要织入到OOP的功能模块中。所以,要进行这种织入过程,我们需要知道在系统的那些执行点上进行织入操作,这些将要在其之上进行织入操作的系统执行点就称之为JoinPoint。
二、PointCut
- Pointcut概念代表的是JoinPoint的表达方式。
三、Advice
- Advice是单一横切关注点逻辑的载体,它代表将会织入到Joinpoint的横切逻辑。
- 在spring中,Advice按照其自身实例(instance)能否在目标对象类的所有实例中共享这一标准,可以分为两大类:
- per-class:通常只是提供方法拦截的功能,不会为目标对象类保存任何状态或者添加新的特性。除了Introduction均属于此种类型。
- per-instance:在spring中,为目标对象添加新的属性和行为必须声明相应的接口以及相应的实现。这样,在通过特定的拦截器将新的接口定义以及实现类中的逻辑附加到目标对象的代理对象之上。
- 按照Advice在JoinPoint位置执行时机的差异或者完成功能的不同,Advice可以分成多种具体形式
- Befor Advice
- After Advice
- After returning Advice
- After throwing Advice
- After (finally) Advice
- Aroud Advice
- Introduction
四、Aspect(spring advisor):Aspect是对系统中的横切关注点逻辑进行模块封装化封装的AOP概念实体。
- 通常情况下,Aspect可以包含多个PointCut以及相关Advice定义。
- 但是在spring中,Advisor通常只持有一个Pointcut和一个Advice,所以我们可以认为Advisor是一种特殊的Aspect
五、织入和织入器
- Spring AOP采用一组类,来完成最终的织入操作,ProxyFactory类则是Spring AOP中最通用的织入器。