HandlerInterceptor接口又三个方法:
- preHandle,它在处理器实际执行之前就会被执行。
- postHandle,它在处理器执行完毕以后被执行。
- afterCompletion,它在整个请求处理完成之后被执行。
preHandle方法返回一个boolean值,你可以通过这个方法来决定是否继续执行处理链。
postHandle方法不一定总适用于注解了@ResponseBody或@ResponseEntity的方法。在某些场景中,HttpMessageConverter会在拦截器的postHandle方法被调用之前就把信息写会响应中。这样拦截器就无法再改变响应了,比如要增加一个响应头之类的。如果有这种需求,请让你的应用实现ResponseBodyAdvice接口,并将其定义为一个@ControllerAdvice bean或直接在RequestMappingHandlerMapping中配置。
网友评论