Spring Boot 1.5.8版本配置Interceptor拦截器无法接收请求问题咨询
问题原因与解决方案
核心结论
该问题主要由主启动类上的@EnableWebMvc注解导致,同时可能存在配置类未被扫描的额外风险
具体原因说明
@EnableWebMvc的影响
Spring Boot 默认会自动完成Web MVC相关的默认配置,包括自动扫描注册所有WebMvcConfigurer实现类中的拦截器、资源映射等规则。
一旦你在主类上加了@EnableWebMvc,就意味着你要完全接管Spring MVC的配置,Spring Boot提供的所有Web自动配置会全部失效,这时候你单独定义在TestConfiguration中的拦截器注册逻辑不会被自动加载,自然无法生效。
2. ### 其他可能的配置遗漏
如果TestConfiguration配置类不在主启动类TestApplication所在的包或其子包下,@SpringBootApplication默认的组件扫描规则无法扫描到该配置类,就算没有@EnableWebMvc注解,拦截器也不会生效。
修复方案
方案1(推荐):直接移除主启动类上的@EnableWebMvc注解
移除注解后Spring Boot的Web自动配置会恢复正常,只要你的TestConfiguration被组件扫描到,你配置的全局拦截器就会生效。
方案2:保留@EnableWebMvc时的适配调整
如果你确实需要完全自定义Web MVC配置必须保留@EnableWebMvc,可以二选一调整:
- 把拦截器注册逻辑迁移到主启动类中,让主类继承
WebMvcConfigurerAdapter重写addInterceptors方法,直接在主类中注册拦截器 - 显式指定组件扫描路径,在主启动类上添加
@ComponentScan(basePackages = "TestConfiguration所在的包全路径"),保证配置类被Spring加载
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

