SpringBoot application.yml的一些加载规则

前言

SpringBoot是Java后端开发必须掌握的技术栈,而application.yml文件作为SpringBoot的核心配置,我们有必要去搞清楚约定的规则,提高开发效率。

1.application.yml与application.properties加载顺序问题

当src/main/resources目录下同时存在application.yml和application.properties的时候,两个配置文件中的内容都会被加载。
加载顺序是:
1.application.yml
2.application.properties
假设两个配置文件中存在相同的配置,那么后加载的将会覆盖掉先加载的,可以理解为Map的put操作。
PS:
该加载顺序规则同样适用于application-{profile}.yml和application-{profile}.yml,不过在项目实践中不建议将yml和properties混用,避免后期维护起来困难。

2.src/test/resources/application.yml与src/main/resources/application.yml加载顺序问题

通常在对SpringBoot应用做单元测试时,会在src/test/resources目录下的新增application.yml,因为测试的配置往往和应用的配置存在差异。
当@SpringBootTest注解标注的类启动Spring上下文时会先加载src/main/resources/application.yml,然后加载src/test/resources目录下的application.yml,当key相同时后加载的配置将覆盖先加载的配置。

3.多环境下的application.yml加载问题

两种方式:

  • 单一application.yml配置方式
spring:
  profiles:
    active: local # 启动哪个环境的配置,---用来设置便捷

---
spring:
  config:
    activate:
      on-profile: local
server:
  port: 8080

---
spring:
  config:
    activate:
      on-profile: product
server:
  port: 8081

---
spring:
  config:
    activate:
      on-profile:  test
server:
  port: 808
  • 多配置文件方式

显然将多个环境的配置放在同一份配置文件中,随着后期配置项的不断增加,整个配置文件的会显得非常臃肿,而且本地配置文件和生产配置文件差异可能也较大,后期不同开发人员维护起来也比较痛苦。
一个好的办法是将一个配置文件拆分成多个配置文件,通过这种方式,每个配置文件中写自己的配置,主配置文件中写清楚用哪一个配置文件就好了,当然如果有些配置项所有环境都一样,也可以将这些配置都维护在主配置文件中。
多环境配置文件的命名规则为:application-环境名.yml

### application.yml主配置文件
spring:
  profiles:
    active: dev 

在这里插入图片描述

参考资料:

https://www.baeldung.com/spring-profiles
https://www.baeldung.com/spring-boot-yaml-vs-properties
https://bbs.huaweicloud.com/blogs/336914
https://www.daimajiaoliu.com/daima/8c7b888b61b7009

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值