首先先来看一下springboot2.4.0之前的版本是如何管理配置文件的.
单一环境,配置文件拆分(before)
大家在开发过程中是否有遇到这种场景呢?就是所有的配置,都写到application.yaml
中,像Mysql,MQ,Redis的配置一长串.显得整个配置文件非常多不好管理.这时候就会想将这些中间件的配置拆分到其他配置文件中,然后使用spring.profiles.include
将其引入进来.
如下:
spring:
profiles:
include: 'db,mq,redis'
上面这段配置的意思就是会将
application-db.yaml
application-mq.yaml
application-redis.yaml
三个配置文件都引入进来,这样application.yaml
的配置就显得很简洁了,整个配置也很清晰.
多环境,配置文件拆分(before)
但是这里没有考虑到多环境的情况.
就比如,我开发环境需要引入application-dev-db.yaml
生产环境需要引入application-prod-db.yaml
这里该怎么做呢?
# application.yaml
spring:
profiles:
active: dev
# application-dev.yaml
spring:
profiles:
include: 'dev-db,dev-mq,dev-redis'
# application-prod.yaml
spring:
profiles:
include: 'prod-db,prod-mq,prod-redis'
按照如上配置,但我们激活环境为dev
时就加载application-dev.yaml
该文件中指定了dev
环境下需要包含进来的配置文件
这样就实现了多环境下的,配置文件拆分.
新版多环境,配置配置文件拆分
那么在2.4.0之后是如何进行配置文件的管理呢?
多了两个配置spring.config.import
spring.profiles.group
# application.yaml
spring:
config:
import: 'application-common.yaml,application-common-2.yaml'
profiles:
active: dev
group:
dev: 'dev-mq,dev-db,dev-redis'
prod: 'prod-mq,prod-db,prod-redis'
spring.config.import
接收的是一个字符串数组
我认为spring.config.import
可以导入一些与环境无关的,但需要拆分出去的配置文件.
而spring.profiles.group
可以对配置文件进行分组,一般情况就是按照环境来分组.
当激活环境为dev
时就会导入spring.profiles.group.dev
下的所配置的文件.即 dev-mq,dev-db,dev-redis
我认为新版的配置会更好管理一些.