zoukankan      html  css  js  c++  java
  • SpringBoot---关于 WebMvcConfigurerAdapter 过时问题及解决方法

    SpringBoot---关于 WebMvcConfigurerAdapter 过时问题及解决方法

    环境:

    IDEA :2020.1

    Maven:3.5.6

    SpringBoot: 2.3.2

    在SpringBoot 1.0 + 中,WebMvcConfigurerAdapter是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制。实现视图控制,静态资源处理,添加拦截器等一系列操作。

    常用方法有:

    //添加拦截器
    public void addInterceptors(InterceptorRegistry registry) {
        }
    //添加静态资源处理
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
        }
    //添加视图控制
        public void addViewControllers(ViewControllerRegistry registry) {
        }
    

    但是, WebMvcConfigurerAdapter 在 SpringBoot 2.0 + (Spring 5.0 +)中显示已经过时,虽然还可以使用,官方不推荐使用。

    image-20200813162739341

    它的替代方案有两种:

    1. 继承WebMvcConfigurationSupport 类(继承这个类后,SpringMVC自动配置失效,相当于全面接管SpringMVC )
    2. 实现 WebMvcConfigurer 接口

    由于使用第一种会违背我们使用 SpringBoot 的初衷,增大工作量。

    第二种方法其实和原来 WebMvcConfigurerAdapter 使用方法类似 ,只是改了接口名,下面介绍第二种方法:

    @Configuration
    public class mvcConfig /*extends WebMvcConfigurerAdapter*/ implements WebMvcConfigurer {   //WebMvcConfigurerAdapter已过时
        //已过时
        /*//拓展SpringMVC
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            //super.addViewControllers(registry);
            registry.addViewController("/newhello").setViewName("hello");
        }
    
        //所有的WebMvcConfigurerAdapter组件都会一起起作用
        @Bean //将组件注册在容器
        public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
            WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
                @Override
                public void addViewControllers(ViewControllerRegistry registry) {
                    registry.addViewController("/").setViewName("login");
                    registry.addViewController("/login.html").setViewName("login");
                }
            };
            return adapter;
        }*/
    
        @Bean //将组件注册在容器
        public WebMvcConfigurer webMvcConfigurer(){
            WebMvcConfigurer webMvcConfigurer = new 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) {
                    InterceptorRegistration interceptor = registry.addInterceptor(new LoginHandlerinterceptor());
                    interceptor.addPathPatterns("/**");
                    interceptor.excludePathPatterns("/","/index.html","/user/login");
                }
    
    //            @Override    并未拦截默认文件的静态资源,不需要进行处理
    //            public void addResourceHandlers(ResourceHandlerRegistry registry) {
    //                registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    //            }
            };
            return webMvcConfigurer;
        }
    }
    
  • 相关阅读:
    Silverlight搜索框 (Button inside TextBox)
    Silverlight的一个简单加载标志Loading...
    WCF “GenerateWcfClientFilesTask”任务意外失败
    C# 字符格式处理
    c# 链表结构(2)循环链表
    CSS技巧 — 不使用图片实现圆角、阴影、渐变等功能【转】
    Silverlight监听属性变化
    浅谈HTTP中Get与Post的区别 [转]
    asp.net本质论——HttpModule
    web.config文件自定义配置节的使用方法的一个简单例子
  • 原文地址:https://www.cnblogs.com/l1ng14/p/13497255.html
Copyright © 2011-2022 走看看