当前位置:K88软件开发文章中心网站服务器框架JFinal → 文章内容

4.2 Interceptor

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:21:42

由 厦门小懒懒 创建,Alma 最后一次修改 2016-10-05   Interceptor 可以对方法进行拦截,并提供机会在方法的前后添加切面代码,实现 AOP 的 核心目标。Interceptor 接口仅仅定了一个方法 void intercept(Invocation inv)。以下是简单的示例:public class DemoInterceptor implements Interceptor {public void intercept(Invocation inv) { System.out.println("Before method invoking"); inv.invoke();System.out.println("After method invoking");}}以上代码中的 DemoInterceptor 将拦截目标方法,并且在目标方法调用前后向控制台输出 文本。inv.invoke()这一行代码是对目标方法的调用,在这一行代码的前后插入切面代码可以很 方便地实现 AOP。nvocation 作为 Interceptor 接口 intercept 方法中的唯一参数,提供了很多便利的方法在拦 截器中使用。以下为 Invocation 中的方法:方法描述void invoke()传递本次调用,调用剩下的拦截器与目标方法Controller getController()获取 Action 调用的 Controller 对象(仅用于控制层拦截)String getActionKey()获取 Action 调用的 action key 值(仅用于控制层拦截)String getControllerKey()获取 Action 调用的 controller key 值(仅用于控制层拦截)String getViewPath()获取 Action 调用的视图路径(仅用于控制层拦截)<T> T getTarget()获取被拦截方法所属的对象Method getMethod()获取被拦截方法的 Method 对象String getMethodName()获取被拦截方法的方法名Object[] getArgs()获取被拦截方法的所有参数值Object getArg(int)获取被拦截方法指定序号的参数值<T> T getReturnValue()获取被拦截方法的返回值void setArg(int)设置被拦截方法指定序号的参数值void setReturnValue(Object)设置被拦截方法的返回值boolean isActionInvocation()判断是否为 Action 调用,也即是否为控制层拦截

4.2 Interceptor