9-SpringBoot配置-项目内部配置文件加载顺序
SpringBoot配置-项目内部配置文件加载顺序
加载顺序为从上到下的排列顺序,高优先级配置的属性会生效
- file:./config/:当前项目下的/config目录下
- file:./ :当前项目的根目录
- classpath:/config/:classpath的/config目录
- classpath:/ :classpath的根目录 (工程下的resources目录)
案例
1.搭建演示工程 springboot-config
2. 测试 classpath:/ :classpath的根目录 (工程下的resources目录)
在 resource 目录下的 application.properties 配置端口号,启动服务如下:
可以看到配置已经生效了,那么下一步我们在另一个优先级更高的目录进行配置。
3.测试 classpath:/config/:classpath的/config目录
因为 config/ 目录下的配置文件优先级更高,所以会覆盖 优先级低的配置,启动为 8083 的端口号。
4.测试 file:./ :当前项目的根目录
前面我们测试的都是在项目模块中的配置,而工程根目录下的优先级将会更高,作为多个模块的统一配置。
5.测试 file:./config/:当前项目下的/config目录下
对于整个工程来说,优先级最高的配置则是 工程目录下的 config 目录的配置文件,可以看到覆盖了所有配置。
5.验证优先级低的配置文件 【未覆盖的参数】也会被加载到
在上面我们只演示了不同位置配置文件的加载优先级,而优先级比较低的配置文件只有同名参数才会被覆盖,如果是不同名的参数则不会被覆盖。
下面我们修改一下工程路径来验证一下:
# 设置启动端口号
server.port=8082
# 修改工程路径
server.servlet.context-path=/hello
从上面的结果来看,已经验证了一点,优先级较低的配置虽然部分同名配置会被覆盖,但是不同名的配置则会加载生效。