Spring Interceptor 不生效

Posted 简言之

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Interceptor 不生效相关的知识,希望对你有一定的参考价值。

此处用到的是spring-boot 2.2.5.RELEASE版本,对应的spring-mvc 5.2.4.RELEASE

发现WebMvcConfigurerAdapter不推荐使用了,推荐WebMvcConfigurer然后就这样写了

@Configuration
public class WebConfig implements WebMvcConfigurer {

    public WebConfig() {
        System.out.println("WebConfig init");
    }

    @Autowired
    private JSONModelInterceptor jsonModelInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jsonModelInterceptor).addPathPatterns("/**").excludePathPatterns("/*/assets/**");// 排除不需要拦截的资源
    }
}

结果新写的拦截器JSONModelInterceptor始终不生效,换回继承WebMvcConfigurerAdapter也是一样,
WebConfig init也都输出了,你还要我怎样...

后来各种搜索引擎,改为继承WebMvcConfigurationSupport 拦截器生效了

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
...

你以为就结束了?


然而另外一个ResourceConfig失效了,这。。

@Configuration
public class ResourceConfig extends WebMvcConfigurationSupport {
...

又各种各种搜索引擎,发现WebMvcConfigurationSupport这货一个项目里面 只能有一个 只能有一个 只能有一个 这是个大坑

之后又发现后台的日期变成时间戳了,明明有配置

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

又各种搜索引擎,找到https://blog.csdn.net/qq_30912043/article/details/80967352

现在去掉WebMvcConfigurationSupport改为实现WebMvcConfigurer,这些问题都解决了,感谢网友感谢搜索引擎。

总结:
配置拦截器、静态资源等不要继承WebMvcConfigurationSupport,改实现WebMvcConfigurer,因为WebMvcConfigurationSupport会覆盖一些默认配置信息。

以上是关于Spring Interceptor 不生效的主要内容,如果未能解决你的问题,请参考以下文章

spring事务不生效原因

spring事务不生效原因

拦截org.springframework.cache.interceptor.CacheInterceptor#invoke的spring aop

如何查看spring ehcache是不是生效

spring security 单一账户多地方登陆提醒, ajax 拦截器 Interceptor

@autowired注解 怎么生效