一.配置文件位置

        SpringBoot启动时会扫描以下位置的application.propertiesapplication.yml作为默认的配置文件:

1.file: ./config/  (项目工程根目录下config文件夹)
2.file: ./  (项目工程根目录下)
3.classpath: /config/ (资源路径下config文件夹)
4.classpath: /  (资源路径下)

properties>yaml>yml

springboot war 配置context springboot web配置_jar

 二.静态资源导入

        SpringBoot对于静态资源的处理依赖于SpringMVC的web配置,因此我们需要去探究WebMvcAutoConfiguration 这个配置类是如何处理静态资源的。在SpringMVC配置类中,我们找到了一个addResourceHandlers方法来处理静态资源:

springboot war 配置context springboot web配置_jar_02

2.1 静态资源映射规则一

        所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 下寻找对应的资源。

         webjars本质就是以jar包的方式引入我们的静态资源 (比如css、jquery、boostrap等),其官方网站为 https://www.webjars.org 。 要访问这些静态资源,举例如下(jQuery):

springboot war 配置context springboot web配置_优先级_03

springboot war 配置context springboot web配置_优先级_04

 2.2 静态资源映射规则二

        对于所有的getStaticPathPattern(),都映射到getStaticLocations()路径下去寻找对应的静态资源。然后我们跟踪源码得到:

  • 默认的getStaticPathPattern()为:  /**
  • 默认的getStaticLocations()为:

     1."classpath:/META-INF/resources/"

        2. "classpath:/resources/",

        3."classpath:/static/",

        4."classpath:/public/"

springboot war 配置context springboot web配置_静态资源_05

         因此,对于我们自定义的静态资源可以存放于这四个位置,直接使用/**就可以自动进行这四个位置的资源全路径匹配,静态资源寻找的优先级为从上到下(1-4),比如我们访问 http://localhost:8080/1.js , 他就会去这些文件夹中寻找对应的静态资源文件:

springboot war 配置context springboot web配置_jar_06

 注意(请求优先级):当请求到来时,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自动配置类中,可以找到欢迎页相关的映射处理器,其映射配置原理如下:

springboot war 配置context springboot web配置_静态资源_07

springboot war 配置context springboot web配置_静态资源_08

springboot war 配置context springboot web配置_静态资源_09

 3.2 图标配置

        与其他静态资源一样,Spring Boot在配置的静态资源位置中查找 favicon.ico。如果在静态资源路径中存在这样的文件,它将自动用作应用程序的favicon。