拦截器在 Spring Boot 1.5.8 版本中无法接收请求

Posted

技术标签:

【中文标题】拦截器在 Spring Boot 1.5.8 版本中无法接收请求【英文标题】:Interceptor not able to receive requests in spring boot version 1.5.8 【发布时间】:2021-12-30 22:30:09 【问题描述】:

我有一个使用相当旧版本的 spring boot 的应用程序。我在应用程序中应用了拦截器,但请求没有到达拦截器。

@Configuration
public class TestConfiguration extends WebMvcConfigurerAdapter 

@Bean
public GenericInterceptor genericInterceptor() 
    return new GenericInterceptor();


@Override
public void addInterceptors(InterceptorRegistry registry) 
    registry.addInterceptor(genericInterceptor()).addPathPatterns("/**");

bean 返回的类是下面声明的 GenericInterceptor。

public class GenericInterceptor extends HandlerInterceptorAdapter
    // custom logic 

主要的spring boot类定义如下

@SpringBootApplication
@EnableWebMvc
public class TestApplication implements WebApplicationInitializer 

public static void main(String[] args) 
    SpringApplication.run(TestApplication.class, args);

请求未到达通用拦截器。这是因为@EnableWebMvc 还是缺少某些东西。 谁能解释一下?

【问题讨论】:

尝试为public class TestConfiguration extends WebMvcConfigurerAdapter 添加@EnableWebMvc 而不是TestApplication 【参考方案1】:

你应该把@EnableWebMvc作为文件说的@Configuration

将此注解添加到@Configuration 类会导入 Spring 来自 WebMvcConfigurationSupport 的 MVC 配置

注意:只有一个@Configuration 类可能有@EnableWebMvc 注解导入 Spring Web MVC 配置。有可以 但是是多个@Configuration 类实现 WebMvcConfigurer 以自定义提供的配置

试试下面的代码:

@EnableWebMvc
@Configuration
public class TestConfiguration extends WebMvcConfigurerAdapter 

    @Bean
    public GenericInterceptor genericInterceptor() 
        return new GenericInterceptor();
    

    @Override
    public void addInterceptors(InterceptorRegistry registry) 
        registry.addInterceptor(genericInterceptor()).addPathPatterns("/**");
    

【讨论】:

spring 自动配置是否不会提供 webmvc 支持。在这个答案中看到了这个:注意不要用@EnableWebMvc注释这个,如果你想为mvc保留Spring Boots自动配置。你能详细说明一下吗?***.com/questions/31082981/…

以上是关于拦截器在 Spring Boot 1.5.8 版本中无法接收请求的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 版本从 1.5.8 更改为 2.0.0

关于Spring boot2.0+配置拦截器拦截静态资源的问题

spring boot开发 静态资源加载不出来

如何将 oAuth2.0 与 Spring boot 1.5.8.RELEASE 集成

Spring全家桶之spring boot

如何查看spring boot url mapping