三. 配置文件的优先级
我们通过 SpringBoot的官方网址创建的SpringBoot项目工程,会在 resources/ 目录下,生成一个 application.properties 的配置文件。
其实,官方推荐和实际开发中,常常使用 application.yml 文件进行配置( 关于yml 文件的用法,下一章节老蝴蝶再重点讲解).
SpringBoot 的配置文件, application.properties / application.yml 除了放置在 resources目录下,也可以放置在其他的目录下。
三.一 SpringBoot的配置文件放置位置和优化级
- file: ./config/
- file: ./
- classpath: ./config/
- classpath: ./
file: ./config/ 指的是放置在项目根目录下的 config 文件夹里面 (如 application1.properties)
file: ./ 指的是放置在项目根 目录下 里面 (如 application2.properties)
classpath: ./config/ 指的是放置在项目类路径即 resources 目录下的 config 文件夹里面。 (如 application3.properties)
classpath: ./ 指的是放置在项目类路径即 resources 目录下。(如 application4.properties)
(老蝴蝶这儿只是演示一下配置文件的位置层次,这些配置文件并不能真正起作用。)
这四个优化级也是从高到低排列的, file: ./config/ 的优化级最高, classpath: ./ 的优化级最低。
Springboot项目启动时会按照如下顺序由高到低读取配置,高优先级的属性会覆盖低优先级的属性,属性文件之间存在互补配置的特性。
也就是说,当 file: ./config/ 下的配置文件里面的属性与 classpath: ./的配置文件里面的属性相同时,会直接用 file: ./config/ 下的配置。
可以这么想像一下: springBoot 加载时,会将这四个层级下的配置文件都一起加载了,合并成一个配置文件,如果有相同的配置文件部分,保留优先级最高的。
SpringBoot 给我们放置在 resources 目录下的 application.properties ,优化级是最低的,我们可以根据具体的项目业务逻辑,添加优化级最高的配置信息。
三.二 演示配置文件的优化级和互补特性
只保留 application.properties 配置文件,将 resoruces/config/application3.properties 改成 application.properties 文件。
三.二.一 config下的application.properties 配置文件添加配置
server.port=8081
这儿只添加 port 端口号配置,意味着 servlet.context-path 采用的是默认的配置。
三.二.二 application.properties 添加配置
server.port=8027 server.servlet.context-path=/Lin
也添加了 port 端口号配置,是 8027. 添加了 servlet.context-path 路径配置,为 /Lin
三.二.三 重启项目,进行验证
端口号用的是 config/application.properties 下面的 8081.
context path 用的是 application.properties 下面的 /Lin
三.二.四 网络 url 请求验证
8027 端口号走不通。
8081端口通,但是路径走不通。
8081/Lin 端口号,项目路径均可以走通。
本章节的代码放置在 github 上:
https://github.com/yuejianli/springboot/tree/main/MavenHelloWorld
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!