请求处理过程示意图(AOP)
关键接口预览
1、Filter, 过滤器(环绕式)
@FunctionalInterface
public interface Filter {
/**
* 过滤
* */
void doFilter(Context ctx, FilterChain chain) throws Throwable;
}
2、RouterInterceptor, 路由拦截器(环绕式)
public interface RouterInterceptor {
/**
* 路径匹配模式(控制拦截的路径区配)
* */
default PathRule pathPatterns(){
//null 表示全部
return null;
}
/**
* 拦截
*/
void doIntercept(Context ctx,
@Nullable Handler mainHandler,
RouterInterceptorChain chain) throws Throwable;
/**
* 提交结果(action / render 执行前调用)
*/
default Object postResult(Context ctx, @Nullable Object result) throws Throwable {
return result;
}
}
在路由拦截阶段,已经从路由器里找出 Main Handler(并作为拦截时的参数):
- 可能是 null
- 可能是 Handler 或它的扩展类(Actoin、Gateway 等)
同时也产生默认状态码:
- 可能是 404
- 可能是 405(有路由记录,但是 http mehtod 不匹配)
3、Interceptor, 拦截器(环绕式)
@FunctionalInterface
public interface Interceptor {
/**
* 拦截
* */
Object doIntercept(Invocation inv) throws Throwable;
}
//绑定 Interceptor 接口实现
@Around(Interceptor.class)