ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] # 简介 如果你想保持springboot的一些mvc的特性,又想自定义一些mvc配置,应该让一个类实现WebMvcConfigurer,并且添加`@Configuration`注解,但是千万不要加`@EnableWebMvc`注解. 如果想自定义HandlerMapping,HandleAdapter,ExceptionResolver等组件,可以创建一个WebMvcRegistrationsAdapter实例来提供以上组件 如果你想要完全自定义springMvc,不保留springboot提供的一切特征,你可以自己定义类并且添加`@Configuration`注解和`@EnableWebMvc`注解 Springboot 中的 Interceptor 拦截器也就是 mvc 中的拦截器,只是省去了 xml 配置部分。并没有本质的不同,都是通过实现 HandlerInterceptor 中几个方法实现。几个方法的作用一一如下。 1. **preHandle** 进入 Habdler 方法之前执行,一般用于身份认证授权等。 2. **postHandle** 进入 Handler 方法之后返回 modelAndView 之前执行,一般用于塞入公共模型数据等。 3. **afterCompletion** 最后处理,一般用于日志收集,统一后续处理等。 # 拦截器 ~~~ @Slf4j public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("preHandle method is running"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info("postHandle method is running"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info("afterCompletion method is running"); } } ~~~ # 注册 ~~~ @Configuration public class MvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //把自己的拦截器类注册进去,然后写上拦截路径 registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); } } ~~~