Spring Boot 不同环境加载不同配置文件

文件加载位置与顺序

SpringBoot启动会扫描以下位置的application.properties/yml文件作为spring boot的默认配置文件:

#file: 指当前项目根目录
file:./config/
file:./
#classpath: 指当前项目的resources目录
classpath:/config/
classpath:

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置的内容,并形成互补配置;

spring.config.location来改变默认配置的位置。

指定配置文件的方式

属性文件的命名:application-{profile}.properties或者application-{profile}.yml,bootstrap-{profile}.properties或者bootstrap-{profile}.yml。

boot的加载配置的顺序:

        application.yml总是会被加载,不管是否配置spring.profile.active.

      最先加载application.yml(properties),然后再按照spring.profile.active加载相应的application-{profile}.yml(properties)。如果application和application-{profile}中键有重复会被application-{profile}替换为最新的。

方法1:配置文件方式

在默认配置文件中application.properties指定环境比如 

spring.profile.active=mydev

程序启动之后就会按照配置的环境加载指定的属性文件。比如当前就加载application-mydev.yml。

当前模块中application》Jar包中application》当前模块中application-{profile}》Jar包中application-{profile}


如果是cloud的项目:
当前模块中bootstrap》Jar包中bootstrap》当前模块中bootstrap-{profile}》Jar包中bootstrap-{profile}>>当前模块中application》Jar包中application》当前模块中application-{profile}》Jar包中application-{profile}

注:如果键重复则会被更新成最新的,按照先后顺序只要找到匹配的文件就不下查找了。

具体可以看Spring Boot中的这个类ConfigFileApplicationListener

方法2:Java系统属性方式

 在启动jar时指定加载配置(Java系统属性方式)

java -Dspring.profiles.active=mydev123  -jar SpringBootEnv-1.0.jar


-Dspring.profiles.active=mydev123一定要放-jar之前能触发java属性方式

或者使用Java代码设置

 System.setProperty("spring.profiles.active","mydev");

 方法3:命令行方式

 在启动jar时指定加载配置(命令行方式)

java -jar SpringBootEnv-1.0.jar --spring.profiles.active=dev56789

 方法4:系统环境变量方式

 在启动jar时指定加载配置(系统环境变量方式)

首先增加一个名称为SPRING_PROFILES_ACTIVE的系统环境变量,然后执行

#当前系统是windows
set SPRING_PROFILES_ACTIVE=dev987

java -jar SpringBootEnv-1.0.jar

 四种方式的优先级

命令行方式 > Java系统属性方式 > 系统环境变量方式 > 配置文件方式

如果需要激活多个profile可以使用逗号隔开,如:- -spring.profiles.active=dev,test

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值