Spring Boot2.0+中,自定義配置類擴展springMVC的功能


在spring boot1.0+,我們可以使用WebMvcConfigurerAdapter來擴展springMVC的功能,其中自定義的攔截器並不會攔截靜態資源(js、css等)。

@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
       // super.addViewControllers(registry);
        //瀏覽器發送 /atguigu 請求來到 success
        registry.addViewController("/atguigu").setViewName("success");
    }
    //所有的WebMvcConfigurerAdapter組件都會一起起作用
    @Bean //將組件注冊在容器
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
        WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/index.html").setViewName("login");
                registry.addViewController("/main.html").setViewName("dashboard");
            }
            //注冊攔截器
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                //super.addInterceptors(registry);
                //靜態資源;  *.css , *.js
                //SpringBoot已經做好了靜態資源映射
                registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                        .excludePathPatterns("/index.html","/","/user/login");
            }
        };
        return adapter;
    }
    @Bean
    public LocaleResolver localeResolver(){
 
        return new MyLocaleResolver();
    }
 
}

在spring boot2.0+以后,WebMvcConfigurerAdapter就過時了,目前通過繼承WebMvcConfigurationSupport類(ps:繼承后好像MVC自動配置不生效了)或者實現WebMvcConfigurer接口來擴展springMVC的功能。然而該版本自定義的攔截器會攔截靜態資源,因此在使用spring2.0+時,配置攔截器之后,我們要把靜態資源的路徑加入到不攔截的路徑之中。

@Configuration
public class MyMvcConfig implements WebMvcConfigurer{
 
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
 
            registry.addViewController("/").setViewName("login");
            registry.addViewController("/index.html").setViewName("login");
            registry.addViewController("/main.html").setViewName("dashboard");
        }
 
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //將靜態資源排除在攔截之外
            registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                    .excludePathPatterns("/index.html","/","/user/login","/static/**");
        }
        @Bean
        public LocaleResolver localeResolver(){
            return new MyLocaleResolver();
        }
 
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM