SpringBoot配置配置文件优先级

https://blog.csdn.net/IT_faquir/article/details/80869578?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

配置文件目录
SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同。
可放置目录(优先级从高到低)

file:./config/ (当前项目路径config目录下);
file:./ (当前项目路径下);
classpath:/config/ (类路径config目录下);
classpath:/ (类路径config下).
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载配置文件并互补配置;
我们可以从ConfigFileApplicationListener这类便可看出,其中DEFAULT_SEARCH_LOCATIONS属性设置了加载的目录:

private static final String DEFAULT_SEARCH_LOCATIONS = “classpath:/,classpath:/config/,file:./,file:./config/”;
1
接着getSearchLocations方法中去逗号解析成Set,其中内部类Loader负责这一配置文件的加载过程,包括加载profile指定环境的配置,以application+’-’+name格式的拼接加载。

多种目录配置同时存在情况
接下来还是以端口配置为例

在resources/目录下配置文件设置端口为8888;
在resources/config目录下配置文件设置端口为9999;
在项目路径下配置文件设置端口为6666;
在项目路径config目录下配置文件设置端口为7777;

最终运行结果:
Tomcat started on port(s): 7777 (http) with context path ‘/beedo’
Started BeedoApplication in 4.544 seconds (JVM running for 5.335)
1
2
通过控制变量法得以论证
其优先级由高到底,高优先级的配置会覆盖低优先级的配置
————————————————
版权声明:本文为CSDN博主「IT_faquir」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/IT_faquir/article/details/80869578

bootstrap,yaml和application.yaml
SpringBoot配置配置文件优先级_第1张图片

你可能感兴趣的:(java,spring,boot)