SpringBoot配置文件的优先级(保姆级超详细讲解)

配置优先级排序

  1. 命令行参数;
  2. java:comp/env的JNDI属性(当前J2EE应用的环境);
  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(最低)
    相同后缀配置文件的优先级:application-xxx.yml > application.yml
  2. 项目中优先级
    ● 项目名/config/xxx.xml (优先级最高)
    ● 项目名/xxx.xml
    ● 项目名/src/main/resources/config/xxx.properties
    ● 项目名/src/main/resources/xxx.yml (优先级最低)
  3. 内外部优先级:
    项目外部配置文件 > 项目内部配置文件

Bootstrap配置文件

加载顺序

● bootstrap 由spring父上下文加载,比application配置文件优先加载,而application配置文件由子上下文加载
● bootstrap加载的配置信息不能被application的相同配置覆盖

优先级
bootstrap 的加载优先于 applicaton,所以优先级从大到小如下:

bootstrap.properties > bootstrap.yml > application.properties > application.yml

配置区别
bootstrap常见应用场景:

  1. bootstrap配置文件中的配置一般是引导配置,类似于bios,用于连接到spring cloud配置中心,加载应用真正需要的配置数据,如:

     spring.application.name 和 spring.cloud.config.server.git.uri
    
  2. 配置一些固定的不能被覆盖的属性(默认情况下,本地的配置文件不能覆盖远程配置)

  3. 配置加密解密外部配置信息的相关属性
    application常见应用场景:spring boot项目的自动化配置

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot配置文件非常灵活,可以根据需要选择不同的文件进行配置Spring Boot配置文件分为两种:application.properties 和 application.yml。两种配置文件优先级是相同的,都可以用来配置 Spring Boot 的应用程序。 首先,Spring Boot 会从 application.properties 和 application.yml 文件中读取配置信息,如果在 application.properties 和 application.yml 中都有同名的属性,则 application.yml 中的配置会覆盖 application.properties 中的配置。 其次,Spring Boot 会从外部配置文件中读取配置信息。外部配置文件可以指定在启动命令中,例如: ``` java -jar myapp.jar --spring.config.name=myapp --spring.config.location=file:/opt/myapp/config/ ``` 这条命令告诉 Spring Boot 使用 myapp.properties 或 myapp.yml 作为配置文件,并且从 /opt/myapp/config/ 目录中读取配置信息。同样,如果一个属性在外部配置文件中被定义,则会覆盖 application.properties 和 application.yml 中的配置。 最后,Spring Boot 会从命令行参数中读取配置信息。例如,生成的 jar 包可以使用以下命令运行: ``` java -jar myapp.jar --server.port=8081 --debug=true ``` 这条命令告诉 Spring Boot 使用 8081 端口启动应用程序,并且启用调试模式。同样,命令行参数中的属性会覆盖所有其他配置信息。 总的来说,Spring Boot配置文件优先级为:命令行参数 > 外部配置文件 > application.yml > application.properties。在实际开发中,我们可以根据需要灵活选择不同的配置方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值