拦截
都HandlerMapping
实现支持处理程序拦截,这在
您希望跨请求应用功能。一个HandlerInterceptor
可以实现
以后:
-
preHandle(..)
— 回调,然后返回一个布尔值。 如果该方法返回true
,执行继续;如果返回false
,其余的 执行链被绕过,并且不会调用处理程序。 -
postHandle(..)
— 处理程序运行后回调。 -
afterCompletion(..)
— 完整请求完成后回调。
为@ResponseBody 和ResponseEntity controller 方法,则将响应写入
并在HandlerAdapter 以前postHandle 被称为。这意味着它是
更改响应(例如添加额外的标头)为时已晚。您可以实现ResponseBodyAdvice 并将其声明为控制器通知 bean 或配置它
直接在RequestMappingHandlerAdapter . |
有关如何作的示例,请参阅有关 MVC 配置部分中的拦截器
配置拦截器。您也可以使用单独的 setter 直接注册它们HandlerMapping
实现。
拦截器不适合作为安全层,因为 与带注释的控制器路径匹配不匹配。通常,我们建议使用 Spring 安全性,或者与 Servlet 过滤器链集成的类似方法, 并尽早应用。 |