SpringBoot - 配置文件的优先级

旧城等待, 2023-10-08 16:42 39阅读 0赞

配置文件优先级:

(1)命令行参数;
(2)java:comp/env的JNDI属性;
(3)JAVA系统的环境属性;
(4)操作系统的环境变量;
(5)JAR包外部的application-XXX.properties或application-XXX.yml配置文件;
(6)JAR包内部的application-XXX.properties或application-XXX.yml配置文件;
(7)JAR包外部的application.properties或application.yml配置文件;
(8)JAR包内部的application.properties或application.yml配置文件;
(9)@Configuration注解类上的@PropertySource指定的配置文件;
(10)通过SpringApplication.setDefaultProperties 指定的默认属性;

项目外部配置文件:

(1)命令行参数:
在命令行中通过 java -jar 命令启动项目时,可以使用连续的两个减号 – 对配置文件中的属性值进行赋值,则命令行设置的属性会覆盖配置文件中属性的值。
java -jar xx.jar —server.port=8081,会覆盖配置文件中的端口。

(2)外置配置文件:
还可以指定配置文件的路径或者目录,则系统会使用指定的配置文件,或者目录下所有的配置文件。
java -jar xxx.jar —spring.config.location=/opt/servicex/config/application.yml
java -jar xxx.jar —spring.config.location=/opt/servicex/config/

项目内部配置文件:

(1)在同一级目录下(除后缀外其他部分都相同)配置文件的优先级:properties(最高) > yml > yaml(最低), 优先级高的配置会覆盖优先级低的配置。
(2)项目中优先级如下(从上往下优先级逐级降低,优先级高的配置会覆盖优先级低的配置):
项目名/config/XXX配置文件 (优先级最高)
项目名/XXX配置文件
项目名/src/main/resources/config/XXX配置文件
项目名/src/main/resources/XXX配置文件 (优先级最低)
在这里插入图片描述

  1. servicex // 项目名
  2. |- servicex-auth // 模块1
  3. |- servicex-system // 模块2
  4. |- config
  5. |- application.yml // 1
  6. |- src
  7. |- main
  8. |- assembly
  9. |- java
  10. |- resources
  11. |- config
  12. |- application.yml // 3
  13. |- application.yml // 4
  14. |- test
  15. |- target
  16. |- application.yml // 2
  17. |- pom.xml
  18. |- sql
  19. |- doc
  20. |- .gitignore
  21. |- pom.xml
  22. |- README.md
  23. External Libraries

BOOTSTRAP配置文件

在 Spring Boot 中有两种上下文,一种是 bootstrap另外一种是 application, bootstrap 是应用程序的父上下文,bootstrap用于应用程序上下文的引导阶段,由父Spring ApplicationContext加载。bootstrap 的加载优先于 applicaton,所以优先级从大到小如下:
bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

内外部优先级:

项目外部配置文件 > 项目内部配置文件

欢迎交流

请添加图片描述

发表评论

表情:
评论列表 (有 0 条评论,39人围观)

还没有评论,来说两句吧...

相关阅读