SpringBoot 中配置拦截器 WebMvcConfigurerAdapter 方法过时带来的新问题

最近在写一个商品秒杀的小demo,用的是springBoot2.0.2在进行拦截器配置的时候用的是WebMvcConfigurerAdapter,继承springBoot默认提供的WebMvcConfigurerAdapter类,但是在idea上提示方法已过时,于是通过查找资料用新的方法WebMvcConfigurationSupport代替,这样idea不提示过时了。

SpringBoot 中配置拦截器 WebMvcConfigurerAdapter 方法过时带来的新问题


   但是这样会引来新的问题,springBoot启动后不加载静态资源了,这种方式会屏蔽Spring Boot的@EnableAutoConfiguration中的设置。这时候启动项目时会发现映射根本没有成功。


SpringBoot 中配置拦截器 WebMvcConfigurerAdapter 方法过时带来的新问题


于是想到自己来写映射,重写addResourceHandlers方法


    

package com.springboot.buying.snapup.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.*;

import java.util.List;

/**
 * @Author: nanjunyu
 * @Description:统一拦截器
 * @Date: Create in  2018/6/21 16:31
 */
@Configuration
public class WebConfig  extends WebMvcConfigurationSupport {

    @Autowired
    UserCookieCheck userCookieCheck;

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(userCookieCheck);
    }



    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static/");
    }


}

 但是启动之后还是一样的结果,还是找不到静态资源,于是自己找到了官方文档,发下如下

Deprecated. 
as of 5.0 WebMvcConfigurer has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter 

An implementation of WebMvcConfigurer with empty methods allowing subclasses to override only the methods they’re interested in. 


所以这种方式也不推荐,官方推荐另一种处理方式,直接实现WebMvcConfigurer接口,解决问题


package com.springboot.buying.snapup.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.*;

import java.util.List;

/**
 * @Author: nanjunyu
 * @Description:统一拦截器
 * @Date: Create in  2018/6/21 16:31
 */
@Configuration
public class WebConfig  implements WebMvcConfigurer {

    @Autowired
    UserCookieCheck userCookieCheck;

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(userCookieCheck);
    }



    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static/");
    }


}


SpringBoot 中配置拦截器 WebMvcConfigurerAdapter 方法过时带来的新问题

总结解决问题也不能完全百度看别人的帖子博客,还是多看官方文档多关注官网直接,因为可能别人的回答也过时了。