对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cadn.net.cn

拦截

HandlerMappingimplementations 支持处理程序拦截,这在 您希望跨请求应用功能。一个HandlerInterceptor可以实现 以后:spring-doc.cadn.net.cn

  • preHandle(..)— 在实际处理程序运行之前返回一个布尔值。 如果该方法返回true,执行继续;如果返回false、其余的 绕过执行链,并且不调用 Handler。spring-doc.cadn.net.cn

  • postHandle(..)— 回调。spring-doc.cadn.net.cn

  • afterCompletion(..)— 完成请求完成后的回调。spring-doc.cadn.net.cn

@ResponseBodyResponseEntitycontroller 方法,则写入响应 并提交到HandlerAdapter以前postHandle被调用。这意味着它是 来不及更改响应,例如添加额外的标头。您可以实现ResponseBodyAdvice并将其声明为 Controller Advice bean 或对其进行配置 直接打开RequestMappingHandlerAdapter.

有关如何 配置拦截器。您也可以通过使用 setter 对单个HandlerMapping实现。spring-doc.cadn.net.cn

拦截器并不适合作为安全层,因为可能存在 与带注释的 controller path 匹配不匹配。通常,我们建议使用 Spring 安全性,或者与 Servlet 过滤器链集成的类似方法, 并尽早申请。