codecamp

Hasor 拦截器链

经过前面的介绍常规的 Hasor Aop 使用已经介绍清楚,下面对于 @Aop 注解来这里在介绍一个特殊的功能,复合拦截器。


复合拦截器,有两层含义

  • 一、可以写多个拦截器,同时拦截同一个切点。
  • 二、可以有多个拦截器同时生效在不同的位置。


我们先说第一点,多个拦截器同时拦截一个切点。它们的生效顺序是先 A 后 B。代码如下:

@Aop({ SimpleInterceptorA.class, SimpleInterceptorB.class })
public class AopBean {
    ...
}


第二点,多个拦截器生效在不同位置,类似这样:

@Aop(ClassInterceptor.class)
public class AopBean {
    public String print() {
        ...
    }
    @Aop(MethodInterceptor.class)
    public String echo(String sayMessage) {
        return "echo :" + sayMessage;
    }
}


在这个 case 中 print 方法调用时 ClassInterceptor 拦截器生效,当调用 echo 方法时 ClassInterceptorMethodInterceptor 会同时生效,生效顺序为,先 Class 后 Method。


如果同时还有一个全局 Aop 也在配置中,那么拦截器的生效顺序是:

  • 全局级 -> 类级 -> 方法级


Hasor 拦截器级别
Hasor 拦截器的匹配器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }