WebMvcConfigurationSupport和WebMvcConfigurer的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebMvcConfigurationSupport和WebMvcConfigurer的区别相关的知识,希望对你有一定的参考价值。
参考技术A springboot2.0之后配置拦截器extends 的WebMvcConfigurerAdapter过时,取而代之的是WebMvcConfigurationSupport。WebMvcConfigurerAdapter只是对WebMvcCofigurer的空实现,而WebMvcConfigurationSupport的实现的方法更全面继承WebMvcConfigurationSupport会发现Spring Boot的WebMvc自动配置失效(WebMvcAutoConfiguration自动化配置)。
导致无法视图解析器无法解析并返回到对应的视图。
springboot 2.0+ 自定义拦截器 静态资源问题
之前项目的springboot自定义拦截器使用的是继承WebMvcConfigurerAdapter重写常用方法的方式来实现的.静态文件不需要进行放行,springboot会自动帮你放行。
springboot2.0之后如果想要自定义的话就不可以了,需要手动放行静态资源。此处我是实现了WebMvcConfigurer来自定义拦截器(根据需求也可以继承WebMvcConfigurationSupport,此处不再赘述)。下面是实现代码
@Configuration public class MyMvcConfig implements WebMvcConfigurer { //所有的WebMvcConfigurerAdapter组件都会一起起作用 @Bean //将组件注册在容器 public WebMvcConfigurer webMvcConfigurer(){ WebMvcConfigurer adapter = 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) { //super.addInterceptors(registry); //静态资源; *.css , *.js //SpringBoot已经做好了静态资源映射 registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("**") .excludePathPatterns("/index.html","/","/hello1","/user/login") .excludePathPatterns("/static/**"); } }; return adapter; } }
注意:(大坑)此处的addPathPatterns("**")不要使用 “/**”,否则静态资源还是会被拦截
以上是关于WebMvcConfigurationSupport和WebMvcConfigurer的区别的主要内容,如果未能解决你的问题,请参考以下文章