此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
拦截
都HandlerMapping
implementations 支持处理程序拦截,这在
您希望跨请求应用功能。一个HandlerInterceptor
可以实现
以后:
-
preHandle(..)
— 在实际处理程序运行之前返回一个布尔值。 如果该方法返回true
,执行继续;如果返回false
、其余的 绕过执行链,并且不调用 Handler。 -
postHandle(..)
— 回调。 -
afterCompletion(..)
— 完成请求完成后的回调。
为@ResponseBody 和ResponseEntity controller 方法,则写入响应
并提交到HandlerAdapter 以前postHandle 被调用。这意味着它是
来不及更改响应,例如添加额外的标头。您可以实现ResponseBodyAdvice 并将其声明为 Controller Advice bean 或对其进行配置
直接打开RequestMappingHandlerAdapter . |
有关如何
配置拦截器。您也可以通过使用 setter 对单个HandlerMapping
实现。
拦截器并不适合作为安全层,因为可能存在 与带注释的 controller path 匹配不匹配。通常,我们建议使用 Spring 安全性,或者与 Servlet 过滤器链集成的类似方法, 并尽早申请。 |