一.配置文件位置
SpringBoot启动时会扫描以下位置的application.properties或application.yml作为默认的配置文件:
1.file: ./config/ (项目工程根目录下config文件夹)
2.file: ./ (项目工程根目录下)
3.classpath: /config/ (资源路径下config文件夹)
4.classpath: / (资源路径下)
properties>yaml>yml
二.静态资源导入
SpringBoot对于静态资源的处理依赖于SpringMVC的web配置,因此我们需要去探究WebMvcAutoConfiguration 这个配置类是如何处理静态资源的。在SpringMVC配置类中,我们找到了一个addResourceHandlers方法来处理静态资源:
2.1 静态资源映射规则一
所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 下寻找对应的资源。
webjars本质就是以jar包的方式引入我们的静态资源 (比如css、jquery、boostrap等),其官方网站为 https://www.webjars.org 。 要访问这些静态资源,举例如下(jQuery):
2.2 静态资源映射规则二
对于所有的getStaticPathPattern(),都映射到getStaticLocations()路径下去寻找对应的静态资源。然后我们跟踪源码得到:
- 默认的getStaticPathPattern()为: /**
- 默认的getStaticLocations()为:
1."classpath:/META-INF/resources/"
2. "classpath:/resources/",
3."classpath:/static/",
4."classpath:/public/"
因此,对于我们自定义的静态资源可以存放于这四个位置,直接使用/**就可以自动进行这四个位置的资源全路径匹配,静态资源寻找的优先级为从上到下(1-4),比如我们访问 http://localhost:8080/1.js , 他就会去这些文件夹中寻找对应的静态资源文件:
注意(请求优先级):当请求到来时,SpringBoot会先去找所有的Controller看能否匹配处理,若不能处理才会再交给静态资源处理器去这四个位置进行匹配,若静态资源也找不到就回报404错误。
2.3 自定义静态资源访问
#自定义静态资源访问前缀:http://localhost:8080/res/** spring: mvc: static-path-pattern: /res/** #自定义静态资源访问位置:http://localhost:8080/res/** => /data 下查找匹配 web: resources: static-locations: classpath:/data
三.欢迎页和图标定制
3.1 欢迎页设置
先说结论:所有静态资源文件夹下的index.html 页面,会被被 /** 映射为欢迎页。即访问 http://localhost:8080/ ,就会自动转到静态资源文件夹下的 index.html页面。
注意:访问欢迎页时,不能配置访问前缀(只能固定为/**),但可以配置静态资源访问位置。
我们在SpringMvc自动配置类中,可以找到欢迎页相关的映射处理器,其映射配置原理如下:
3.2 图标配置
与其他静态资源一样,Spring Boot在配置的静态资源位置中查找 favicon.ico。如果在静态资源路径中存在这样的文件,它将自动用作应用程序的favicon。