您的位置:首页 > 编程语言 > Java开发

struts --interceptor

2016-04-21 19:41 393 查看
Interceptor 原本是AOP中的概念,本质上是代码段,可以通过织入点(可以是对象,也可以是对象中的方法),来指定Interceptor的代码逻辑在织入点之前还是之后执行,从而起到拦截的作用。

AOP:Aspect,一个关注点的模块化。Interceptor。数据库的事务管理。

Advice:环绕通知

PointCut:Action对象

JoinPoint:Action的执行

正题-----

xwork中的Interceptor,是一组环绕在切入点(Action对象)的执行切面,对Action起拦截作用。

public interface Interceptor extends Serializable{

void destroy();

void init();

String intercept(ActionInvocation invocation) throws Exception;

}

便于ActionInvocation在Interceptor内部进行执行调度:invocation.invoke();意思是对 对象和Action对象共同构成的执行栈进行逻辑执行调度。

Interceptor中,有两种不同的执行逻辑:

1.调用ActionInvocation的invoke方法来指定对执行栈的进一步调度执行,invoke方法触发了执行栈中剩余的的Interceptor和Action形成递归调用链,执行完成并返回结果。

2.直接返回一个String类型的ResultCode来终止执行栈的调度。

xwork的AOP与spring的AOP对比

AOP元素spring实现机制xwork实现机制
切面(Aspect)拦截器拦截器
通知(Advice)Around、Before 、AfterAround、Before 、After
切入点(Pointcut)满足特定条件的方法Action对象
连接点(Joinpoint)方法的执行Action的执行
本质区别是对于切入点的定义不同,拦截器所拦截的对象不同。spring偏重方法级别的拦截,xwork针对Action对象的拦截。

位于invocation.invoke方法调用之前的代码,会在Action对象执行之前执行。

位于invocation.invoke方法调用之后的代码,会在Action对象执行之后执行。

AOP编程的本质是对切入点运行状态的改变。

xwork的AOP中。切入点是Action对象,xwork中拦截器的职责是通过对Action状态(一个对象的状态由此对象的属性来表达)的改变对Action的行为进行扩展。

xwork的Interceptor是对Action对象的属性进行管理。

Action作为运行在属性-行为模式上的对象,特质有三个:

与外部环境的交互接口(环境依赖)

请求数据和响应数据(数据依赖)

构成Action的行为动作与业务逻辑处理对象之间的协作关系。(协作依赖)

----IOC相似。xwork是用AOP来实现IOC。

Interceptor的逻辑意义:1.对事件处理流程中的主要职责和次要职责的有效划分,分而治之。

2.Interceptor在Action周围形成众多的执行层次,为实现AOP编程打下数据结构的基础。

3.Interceptor与Action共同构成的执行栈被ActionInvocation调度执行,应用责任链模式,从而改变事件处理流程的顺序处理逻辑,自然形成AOP模型的雏形。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: