1. 程式人生 > >spring boot攔截器WebMvcConfigurerAdapter,以及高版本的替換方案

spring boot攔截器WebMvcConfigurerAdapter,以及高版本的替換方案

spring boot

最近項目采用spring icloud,用的spring boot版本是1.5.x的,spring boot 2.0,Spring 5.0 以後WebMvcConfigurerAdapter會取消掉。以下介紹下大體的內容,希望對大家都有所幫助。

  • 以下WebMvcConfigurerAdapter 比較常用的重寫接口

/** 解決跨域問題 **/
public void addCorsMappings(CorsRegistry registry) ;
/** 添加攔截器 **/
void addInterceptors(InterceptorRegistry registry);
/** 這裏配置視圖解析器 **/
void configureViewResolvers(ViewResolverRegistry registry);
/** 配置內容裁決的一些選項 **/
void configureContentNegotiation(ContentNegotiationConfigurer configurer);
/** 視圖跳轉控制器 **/
void addViewControllers(ViewControllerRegistry registry);
/** 靜態資源處理 **/
void addResourceHandlers(ResourceHandlerRegistry registry);
/** 默認靜態資源處理器 **/
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
  • 新的版本解決方案目前有兩種

    方案1 直接實現WebMvcConfigurer

        @Configuration
    public class WebMvcConfg implements WebMvcConfigurer {
    
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                    registry.addViewController("/index").setViewName("index");
            }
    
    }

    方案2 直接繼承WebMvcConfigurationSupport

        @Configuration
    public class WebMvcConfg extends WebMvcConfigurationSupport {
    
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                    registry.addViewController("/index").setViewName("index");
            }
    
    }

其實,源碼下WebMvcConfigurerAdapter是實現WebMvcConfigurer接口,所以直接實現WebMvcConfigurer接口也可以;WebMvcConfigurationSupport與WebMvcConfigurerAdapter、接口WebMvcConfigurer處於同一個目錄下WebMvcConfigurationSupport包含WebMvcConfigurer裏面的方法,由此看來版本中應該是推薦使用WebMvcConfigurationSupport類的,WebMvcConfigurationSupport應該是新版本中對WebMvcConfigurerAdapter的替換和擴展【個人見解,如果有誤,請幫忙糾正】

spring boot攔截器WebMvcConfigurerAdapter,以及高版本的替換方案