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 +)中显示已经过时,虽然还可以使用,官方不推荐使用。

它的替代方案有两种:
- 继承WebMvcConfigurationSupport 类(继承这个类后,SpringMVC自动配置失效,相当于全面接管SpringMVC )
- 实现 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;
    }
}
SpringBoot---关于 WebMvcConfigurerAdapter 过时问题及解决方法的更多相关文章
- springboot springmvc 抛出全局异常解决方法
		springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ... 
- SpringBoot自定义servlet、注册自定义的servlet、过滤器、监听器、拦截器、切面、webmvcconfigureradapter过时问题
		[转]https://www.cnblogs.com/NeverCtrl-C/p/8191920.html 1 servlet简介 servlet是一种用于开发动态web资源的技术 参考博客:serv ... 
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
		最近使用SpringBoot的自定义拦截器,在拦截器中注入了一个DAO,准备下面作相应操作,拦截器代码: public class TokenInterceptor implements Handle ... 
- spring boot 添加拦截器的简单实例(springBoot 2.x版本,添加拦截器,静态资源不可访问解决方法)
		spring中拦截器主要分两种,一个是HandlerInterceptor,一个是MethodInterceptor 一.HandlerInterceptor HandlerInterceptor是s ... 
- springboot使用fastjson中文乱码解决方法 【转载】
		以前使用fastjson替换jackson时,没有直接在页面打印过json,都是js使用没有出现乱码,偶然 打印出来出现了中文乱码 之前使用的配置方式 @Configuration public cl ... 
- SpringBoot拦截器中无法注入bean的解决方法
		SpringBoot拦截器中无法注入bean的解决方法 在使用springboot的拦截器时,有时候希望在拦截器中注入bean方便使用 但是如果直接注入会发现无法注入而报空指针异常 解决方法: 在注册 ... 
- Springboot中关于跨域问题的一种解决方法
		前后端分离开发中,跨域问题是很常见的一种问题.本文主要是解决 springboot 项目跨域访问的一种方法,其他 javaweb 项目也可参考. 1.首先要了解什么是跨域 由于前后端分离开发中前端页面 ... 
- 记一次SpringBoot 开发中所遇到的坑和解决方法
		记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ... 
- springboot打包成jar包后找不到xml,找不到主类的解决方法
		springboot打包成jar包后找不到xml,找不到主类的解决方法 请首先保证你的项目能正常运行(即不打包的时候运行无误),我们在打包时经常遇到如下问题: springboot打包成jar包后找不 ... 
随机推荐
- Makefile中的一个坑
			问题描述:Makefile中,我想将一个变量的后缀全部进行替换,如将所有的.c后缀变成.d后缀 方法:$(CUR_SOURCE: .c = .d ) 说明:查阅相关资料,了解到上述这种语法就可以将所有 ... 
- 题解 洛谷 P5163 【WD与地图】
			首先将操作倒序,把删边转化为加边.先考虑若边是无向边,条件为连通,要怎么处理. 可以用并查集来维护连通性,对每个连通块维护一颗权值线段树,连通块的合并用线段树合并来实现,线段树同时也支持了修改点权. ... 
- 2. 妈呀,Jackson原来是这样写JSON的
			没有人永远18岁,但永远有人18岁.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众 ... 
- TSGCTF-web  Beginner's Web (js内置方法__defineSetter__)
			const fastify = require('fastify'); const nunjucks = require('nunjucks'); const crypto = require('cr ... 
- fiddler替换修改后的js文件绕过无限debugger
			转自:https://www.jianshu.com/p/38c4afae636c 1.在js文件右击, 然后点击save as ..., 把js文件保存到本地.(网站:https://taodaxi ... 
- python的__get__方法看这一篇就足够了
			get类型函数 直接上代码: class TestMain: def __init__(self): print('TestMain:__init__') self.a = 1 if __name__ ... 
- Ghost-无损DDL
			目录 一.什么是DDL? 二.表级锁和元数据锁 2.1.什么是表锁? 2.2.什么是MDL? 三.什么是无损DDL? 四.DDL重建表 Mysql5.5之前重建表 Mysql5.6之后重建表 五.gh ... 
- bootstrap插件-滚动监听
			代码 引入bootstrap.js 和bootstrap.css两个文件 <!DOCTYPE html> <html> <head> <meta charse ... 
- 对‘sqrt’未定义的引用
			首先, 引用数学库 #include<math.h> 引用数学库时,要在编译后加上-lm 是每一个都要加!! 如下: gcc su.c -o su.o -lm gcc -g su.c - ... 
- python爬虫基础要学什么,有哪些适合新手的书籍与教程?
			一,爬虫基础: 首先我们应该了解爬虫是个什么东西,而不是直接去学习带有代码的内容,新手小白应该花一个小时去了解爬虫是什么,再去学习带有代码的知识,这样所带来的收获是一定比你直接去学习代码内容要多很多很 ... 
