springboot项目中使用mvc:annotation-driven问题

背景
在一次无意的观察中,发现应用A(一个springboot应用)中的拦截器没有生效,该拦截器通过WebMvcConfigurerAdapter::addInterceptors注册

定位

  1. 分析了一圈代码没有发现异常的情况下,和其他拦截器生效的应用对比,发现唯一的区别在于A使用了mvc:annotation-driven注解
  2. 该注解会自动生成3个Bean,其中一个bean为RequestMappingHandlerMapping(该点google得知)
  3. 通过在DispatcherServlet::doDispatch中断点发现,handlerMappings中有2个Bean:RequestMappingHandlerMapping,其中一个符合预期,其中包含了我们的拦截器,另一个RequestMappingHandlerMapping中并没有该拦截器
  4. google得知mvc:annotation-driven自动创建的RequestMappingHandlerMapping中不包含自定义的拦截器

解决
ok,最简单的解决方法就是删除mvc:annotation-driven, 都已经是springboot的应用,为啥还使用这个呢

你可能感兴趣的:(java)