JFinal中的AOP

来源:互联网 发布:家庭网限制80端口吗 编辑:程序博客网 时间:2024/05/22 01:39

本帖讲的主要是Interceptor。

关于AOP的概念,我这里的理解就是,希望在某处理的基础上进行一些先决处理,或者善后处理。

比如,某些论坛的权限验证。访问某某区域需要时登录或者是需要时某某VIP等级才能访问。

这个时候,在页面跳转之前,就可以加上一个权限验证的拦截器。

1.层次分类

(1)全局Global

(2)注射Inject

(3)类Class

(4)方法Method

其中,注射拦截器可以看作是一种特殊的类拦截器,用于非侵入式的部署(部署的时候不需要像其他拦截器一样在代码中加入一行@Before(XXX.class),

而是通过一个函数调用将拦截器与被拦截类绑定),但是注射拦截器总在类拦截器的前面。


2.功能分类

(1)控制层拦截器(Action)

(2)业务层拦截器(Service)


这两种拦截器,内容上一个是针对action的,一个是程序自身的逻辑的。

触发方式上有区别:

①Action拦截器,在用户调用Action的时候自动触发

②Service拦截器,需要先对某类或者某个对象进行增强,然后才能触发。


3.处理方式

(1)Interceptor

这个主要用于定义拦截器,作一些什么处理,它impliments Interceptor,然后实现intercept方法,

在里面进行被拦截方法的调用,以及相关的处理。

(2)@Before或者me.addGlobalXXXInterceptor

①Before用来配置,Class与Mehotd拦截器

②me.addGlobalXXXInterceptor用来在configInterceptor中配置全局拦截器

③inject拦截器通过在增强的时候用传入参数进行配置

(3)@Clear

对于该层以上的拦截器进行清除(不清除该层)

使用情况,比如在进行任意操作的时候有一个登录拦截器,但是对于登录操作你是不能拦截的。

1 0