- 创建Springboot应用,选中我们需要的模块
- Springboot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来
- 自己编写业务代码
自动配置原理?
这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?
在自动配置中:
xxxxAutiConfiguration:帮我们给容器中自动配置组件;
xxxxProperties:配置类来封装配置文件的内容
WebMvcAutoConfiguration.class
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
ServletContext servletContext = this.getServletContext();
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
//在该类下有对资源处理的方法
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (servletContext != null) {
registration.addResourceLocations(new Resource[]{new ServletContextResource(servletContext, "/")});
}
});
}
}
分析:
1、所有的/webjars/,都去classpath:/META-INF/resources/webjars/找资源
webjars:以jar包的方式引入静态资源
查找对应webjars的maven引入:https://www.webjars.org/
例如引入jQuery:
<!--引入jQuery的webjar-->
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.3.1</version>
</dependency>
访问:
http://localhost:8080/webjars/jquery/3.6.0/jquery.js
结果:
2、"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
默认会到这4个路径下找资源
例如:
访问结果:
3、欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射;
将index.html放到static文件夹下,访问:http://localhost:8080/,结果如下:
**4、所有的 /favicon.ico 都是在静态资源文件下找