文档章节

JFinal AOP学习笔记

zhuqianli
 zhuqianli
发布于 2017/01/09 16:07
字数 583
阅读 145
收藏 0

实现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 之外声明的拦截器
 


 

 


 


 

© 著作权归作者所有

zhuqianli
粉丝 5
博文 131
码字总数 57017
作品 0
杭州
程序员
私信 提问
SoJpt Boot 2.0-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

SoJpt Boot,在Spring Boot框架下使用Jfinal特性极速开发。 可以在Spring Boot中向使用Jfinal一样使用Enjoy, Aop, controller的一系列方法(如: getFile(), renderFile....),以及ActiveRecor...

Sohnny
04/09
0
0
JFinal 4.2 发布,一个 jar 包走天涯

JFinal 此前唯一的第三方依赖在添加业务层 AOP 时被引入,本次 4.2 版本就是要干掉这唯一的第三方依赖,从此一个 jar 包走天涯 JFinal 4.2 新增的 proxy 模块仅用 628 行代码就干掉了 19505 ...

JFinal
06/06
0
115
关于JFINAL对AOP的支持

@JFinal 你好,想跟你请教个问题:波总,群里总听大家在讨论AOP,按我原来使用JFINAL的理解,aop就当挡截器在用了,接收了controller的参数,增强了处理,后来听说jfinal又增加了业务层aop,d...

长篇小说
2016/02/04
1K
2
jfinal框架学习参考资料汇总

jfinal框架教程-学习笔记(一) http://blog.csdn.net/zb0567/article/details/21083115 jfinal框架教程-学习笔记(二) http://blog.csdn.net/zb0567/article/details/21083021...

万里虎
2014/12/04
0
1
SoJpt Boot 2.2-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

在Spring Boot框架下使用Jfinal特性极速开发,可以在Spring Boot中向使用Jfinal一样使用Enjoy、Aop、Controller等一系列方法(如: getFile(), renderFile....),以及ActiveRecord SoJpt Boot,在...

Sohnny
04/13
0
12

没有更多内容

加载失败,请刷新页面

加载更多

蚂蚁区块链BaaS:开放在云端,落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的...

阿里云官方博客
29分钟前
3
0
Idea cannot access【好使】

Idea中无法访问类中public方法。。 解决: idea点击左下角电脑图标,打开右边栏各种功能键 右边栏Maven Projects中点一下刷新,就是那个两个蓝的箭头组成的环 ----------------------------...

Airship
30分钟前
3
0
Spark内置图像数据源初探

作者:林武康,花名知瑕, 阿里巴巴计算平台事业部EMR团队的高级开发工程师,Apache HUE Contributor, 参与了多个开源项目的研发工作,对于分布式系统设计应用有较丰富的经验,目前主要专注于...

阿里云云栖社区
30分钟前
1
0
【面试被虐】游戏中的敏感词过滤是如何实现的?

小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了以下事情的发生….. 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过...

爱编程的浪子
33分钟前
4
0
springboot之maven属性引入

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><delimiters><delimite......

Online_Reus
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部