博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JFinal AOP学习笔记
阅读量:6928 次
发布时间:2019-06-27

本文共 1892 字,大约阅读时间需要 6 分钟。

hot3.png

实现Interceptor接口

public class DemoInterceptor implements Interceptor{    public void intercept(Invocation invocation) {        System.out.println("类拦截器触发方法前");        invocation.invoke();        System.out.println("类拦截器触发方法后");    }}

 

以下为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 调用,也即是否为控制层拦截

Before注解,可配置Class、Method级别的的拦截器

// 配置一个Class级别的拦截器,她将拦截本类中的所有方法@Before(AaaInter.class)public class BlogController extends Controller {// 配置多个Method级别的拦截器, 仅拦截本方法@Before({BbbInter.class, CccInter.class})public void index() {}// 未配置Method级别拦截器, 但会被Class级别拦截器AaaInter所拦截public void show() {}}

全局拦截器

public void configInterceptor(Interceptors me) {        //控制层拦截器  发起action请求时,调用        me.addGlobalActionInterceptor(new GlobalActionInterceptor());        //服务层拦截器        //使用Duang.duang(),Enhancer.enhance(),Controller.enhance()调用方法时,调用        me.addGlobalServiceInterceptor(new GlobalServiceInterceptor());    }

Inject 拦截器

public void injectDemo() {// 为enhance方法传入的拦截器称为Inject拦截器,下面代码中的Tx称为Inject拦截器OrderService service = Enhancer.enhance(OrderService.class, Tx.class);service.payment(…);}

Inject拦截器可被认为是Class级拦截器,但是次序在Class级拦截器前

 

Clear 注解用于清除声明在 Method 以外的拦截器,也即只能清除 Global、 Class 或 Inject

拦截器。
Clear 用法记忆技巧:
 不带参数时清除所有拦截器
 带上参数时只清除该参数指定的拦截器
 清除操作仅作用于 Method 之外声明的拦截器
 

 

 

 

 

转载于:https://my.oschina.net/zhuqianli/blog/821451

你可能感兴趣的文章
浅析流程管理活动的实施要领
查看>>
影响企业信息化成败的几点因素
查看>>
JavaScript服务器编程(对象属性枚举中应当避免原型污染问题)
查看>>
Office 365 On MacOS 系列——Outlook配置项
查看>>
Linux实战考试题:批量创建用户和密码-看看你会么?
查看>>
新加坡IT薪酬总结,想出国发展的同学可以考虑下
查看>>
Shell脚本单行和多行注释
查看>>
CPU硬件辅助虚拟化技术
查看>>
话里话外:中小型装备制造企业竞争优势构建之路
查看>>
安全管理平台未来的发展趋势【提要】
查看>>
PowerShell 运维菜鸟系列-02-批量取n台Windows KEY(2018年大年初一奉献)
查看>>
演示:取证分析IPV6组播地址与MAC地址的映射关系
查看>>
IT168采访记录
查看>>
Tomcat - Disable JSESSIONID in URL
查看>>
小技巧:域账号变更信息筛选\用户数据筛选
查看>>
juniper SRX vmware模拟器(能够出现可用网卡)
查看>>
Hyper-V 2016 系列教程40 使用 PowerShell 实现虚拟机自动化和管理虚拟机
查看>>
搭建NIS服务器实现用户集中化认证
查看>>
Eclipse europa 更新时 Error retrieving "feature.xml". [error in opening zip file]的解决
查看>>
[PHP] 面向对象
查看>>