首先,你要了解SpringBoot配置文件加载顺序,加载位置(代码内,Nacos等),当然这不是这里要说的,这里我们就是约定配置文件在resources下,一般有一个主配置文件application.yml,但是当配置过多时,一个配置文件,将会非常臃肿。
所以我们需要把配置文件拆分,一些不需要动的,公用的,核心的配置放到application.yml下,其他的可以有多种拆分方式,例如可以分开发环境、测试环境、正式环境

在bootstrap.yml增加配置标记当前环境
spring:
profiles:
active: dev
这样配置文件等于分成了好多类,但是对于一个环境来说,有两个配置文件了,比如开发就是application.yml+application-dev.yml两个配置文件。
但是有个问题,比如如果工程里面有MySQL、Redis、Kafka、短信、邮件等配置时,还是非常臃肿,而且一旦我们要修改个东西,就要去application-dev.yml中找了,因此我们可以利用Spring配置文件中可以引用属性,再次拆分一下。
我们将所有地址、用户、密码可能需要变动的集中到一个配置文件,然后将其他分开,注意这里为了演示实际上是否需要拆根据实际情况(目前我用的就是两个配置)。
这样,我们把需要变动的放到application.yml内,然后比如MySQL的等单独成文件。

然后在application.yml中除了配置环境以外,再引入其他配置
spring:
profiles:
active: dev
include: druid,redis,kafka,zconfig
然后例如Redis配置文件application-redis.yml中,可以这样配置
spring:
redis:
host: ${redis.host}
port: ${redis.port}
password: ${redis.password}
database: ${redis.database}
connect-timeout: 30ms
lettuce:
pool:
max-idle: 10
max-active: 20
min-idle: 2
max-wait: 5000ms
这里定义了引用,我们在application-dev.yml中定义这些变量
redis:
host: 127.0.0.1
port: 6379
password: 1234657890
database: 0
这样,我们把配置文件一下子又拆分了好几个,当然必须是需要这么干了。
而且Spring的配置非常灵活,你也可以这样配置
spring:
profiles:
# active: dev,druid,redis,kafka,zconfig
include: dev,druid,redis,kafka,zconfig
一切技术都是为功能服务的,这里只是演示如何使用,一切以实际情况为主。
由于Spring的配置非常灵活,因此有必要统一使用方式,防止把自己给配置蒙了。
比如,我这里叫application.yml,当时别人就喜欢叫bootstrap.yml,然后再加后缀。
springboot中配置文件application.yaml的位置及多环境配置
springboot中配置文件application.yaml的四个位置
- 位置一:整个项目的config包下
- 位置二:整个项目的根目录下
- 位置三:resources文件夹下config包中
- 位置四:resources文件夹下
当四个位置的配置文件全部都存在的时候,读取的顺序:
位置一 > 位置二 > 位置三 > 位置四