前言
今天写登录页面的时候,遇到了一个问题,bootstrape的静态资源引用失败,
提示No mapping for GET /bootstrap/css/bootstrap.min.css
,
百度后得知需要在MVC自动配置类映射静态资源路径.
1. 什么是MVC自动配置类?
回到前言:如何解决引入bootstrape资源失败No mapping for GET /bootstrap/css/bootstrap.min.css
?
答:建立WebMvcConfigurer类,重写静态资源目录
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
}
成功解决!
再说什么是什么是MVC自动配置类?
相比SSM框架越来越臃肿的配置,SpringBoot有一套约定俗成的自动配置,
如静态资源放在resources文件夹及其目录中的static、public、templates文件夹,SpringBoot通过映射目录,直接可以通过根目录访问,
省去了大量的配置,方便快捷。
我们如果需要修改相关的配置,只需要在WebMvcConfigurer
中重写相关的方法即可。
2. MVC自动配置类都做了什么?
2.1 内容协商视图解析器 ContentNegotiatingViewResolver
自动配置了ViewResolver,即根据方法的返回值取得视图对象(View),然后由视图对象决定如何渲染(转发,重定向)。
2.2 转换器和格式化器FormattingConversionService
2.3 修改SpringBoot的默认配置
SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(如果用户自己配置@bean),如果有就用用户配置的,如果没有就用自动配置的;
如果有些组件可以存在多个,比如我们的视图解析器,就将用户配置的和自己默认的组合起来!
我们要做的就是编写一个@Configuration
注解类,并且类型要为WebMvcConfigurer
,还不能标注@EnableWebMvc注解;我们去自己写一个;我们新建一个包叫config,写一个类MyMvcConfig;
//因为类型要求为WebMvcConfigurer,所以我们实现其接口
//可以使用自定义类扩展MVC的功能
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// 浏览器发送/test , 就会跳转到test页面;
registry.addViewController("/test").setViewName("test");
}
}
2.4 全面接管SpringMVC
不推荐使用全面接管SpringMVC
标签:SpringBoot,配置,MVC,自动,WebMvcConfigurer,public From: https://www.cnblogs.com/cnleika/p/17041644.html