HandlerInterceptor 和 WebMvcConfigurer那个先执行
时间: 2023-11-03 22:23:02 浏览: 39
在 Spring MVC 中,HandlerInterceptor 和 WebMvcConfigurer 都是在 DispatcherServlet 中执行的。具体来说,HandlerInterceptor 的执行顺序是先于 Controller 的方法执行,而 WebMvcConfigurer 的执行顺序是在 DispatcherServlet 初始化时执行。因此,HandlerInterceptor 先于 WebMvcConfigurer 执行。
相关问题
HandlerInterceptor 和 WebMvcConfigurer
HandlerInterceptor是Spring MVC框架提供的拦截器,用于在请求处理的前后执行一些自定义的逻辑。它可以在请求被处理之前和之后对请求进行拦截和处理,例如日志记录、身份认证、权限校验等。HandlerInterceptor 可以拦截所有的请求,也可以只拦截某些特定的请求。
WebMvcConfigurer是Spring MVC框架提供的用于定制化WebMvc配置的接口,它可以配置拦截器、消息转换器、视图解析器、静态资源等,以及添加自定义的HandlerMapping和HandlerAdapter等。通过实现WebMvcConfigurer接口,可以对Spring MVC框架进行定制化配置,以满足应用程序的特定需求。
一般来说,我们可以通过实现HandlerInterceptor接口来拦截请求并处理请求的前后逻辑,通过实现WebMvcConfigurer接口来对Spring MVC框架进行定制化配置。同时,我们可以在WebMvcConfigurer中注册自定义的HandlerInterceptor。
HandlerInterceptor 和 WebMvcConfigurer代码使用详细
HandlerInterceptor 是 Spring MVC 框架提供的拦截器接口,用于在请求处理前、后或者请求完成后对请求进行拦截和处理。而 WebMvcConfigurer 是 Spring MVC 框架提供的配置接口,用于配置 Spring MVC 框架的各种参数。
下面是一个使用 HandlerInterceptor 和 WebMvcConfigurer 的示例代码:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
private class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
// 在请求处理前进行拦截和处理
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
// 在请求处理后进行拦截和处理
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 在请求完成后进行拦截和处理
}
}
}
```
在这个示例代码中,我们首先创建了一个名为 WebMvcConfig 的配置类,并实现了 WebMvcConfigurer 接口。在这个类中,我们重写了 addInterceptors 方法,用于添加拦截器。在这里,我们添加了一个 MyInterceptor 拦截器,并指定了拦截的请求路径为 "/*"。
MyInterceptor 是一个自定义的拦截器类,实现了 HandlerInterceptor 接口,并重写了 preHandle、postHandle 和 afterCompletion 方法,用于在请求处理前、后或者请求完成后对请求进行拦截和处理。
在 preHandle 方法中,我们可以对请求进行拦截和处理,并返回一个 boolean 值,表示是否允许请求继续执行。
在 postHandle 方法中,我们可以对请求处理后的结果进行拦截和处理,并进行后续操作。
在 afterCompletion 方法中,我们可以在请求完成后进行拦截和处理,并进行后续操作。
通过这样的方式,我们可以通过自定义拦截器来对请求进行拦截和处理,并进行后续操作。同时,通过 WebMvcConfigurer 接口,我们可以配置 Spring MVC 框架的各种参数,以满足不同的需求。