处理器拦截器
约 616 字大约 2 分钟
处理器拦截器
介绍
从 SpringMvc
借鉴(抄袭)了一个 Jt808HandlerInterceptor
,会在执行处理器方法之前、之后已经处理器方法出现异常时回调对应方法。
这个接口的作用和 SpringMvc
的 HandlerInterceptor
一样。
提示
将 Jt808HandlerInterceptor
的实现类实例加入到 spring
容器中就可以生效了。
接口定义如下:
public interface Jt808HandlerInterceptor extends OrderedComponent {
/**
* 调用处理器方法之前回调
*
* @param exchange 当前请求上下文
* @param handler 处理当前消息的处理器,内置处理器有两种:
* <ol>
* <li>{@link SimpleJt808RequestHandler SimpleJt808RequestHandler} 的实现类</li>
* <li>被 {@link Jt808RequestHandlerMapping @Jt808RequestHandlerMapping} 标记的方法</li>
* </ol>
* @return true: 会正常调用处理器方法处理消息; false: 直接返回,不再调用处理器方法
*/
default boolean preHandle(Jt808ServerExchange exchange, Object handler) throws Throwable {
return true;
}
/**
* 处理器执行结束之后回调
*
* @param exchange 当前请求上下文
* @param handler 处理当前消息的处理器,内置处理器有两种:
* <ol>
* <li>{@link SimpleJt808RequestHandler SimpleJt808RequestHandler} 的实现类</li>
* <li>被 {@link Jt808RequestHandlerMapping @Jt808RequestHandlerMapping} 标记的方法</li>
* </ol>
* @param handlerResult 处理器处理结果
*/
default void postHandle(Jt808ServerExchange exchange, Object handler, @Nullable Jt808HandlerResult handlerResult) throws Throwable {
}
/**
* @param exchange 当前请求上下文
* @param handler 处理当前消息的处理器,内置处理器有两种:
* <ol>
* <li>{@link SimpleJt808RequestHandler SimpleJt808RequestHandler} 的实现类</li>
* <li>被 {@link Jt808RequestHandlerMapping @Jt808RequestHandlerMapping} 标记的方法</li>
* </ol>
* @param exception 处理器处理消息时候出现的异常(@Nullable)
*/
default void afterCompletion(Jt808ServerExchange exchange, Object handler, @Nullable Throwable exception) throws Throwable {
}
}
示例
实现接口,并加入到 Spring 容器中即可。如果有多个拦截器,可以通过复写 getOrder()
方法来控制多个拦截器的执行顺序。