背景:
一个项目有多套环境,如:开发环境(dev)、测试环境(test)、生产环境(prod),并且每种环境的配置项都不相同。比如:测试环境定时任务的时间要设置的短一些,方便测试整个流程,而生产环境的定时任务时间则不能设置这么短。
同一套环境又有多个微服务,不同微服务的配置项自然也不相同。
同一个微服务又有多个配置,比如: common.properties、database.properties 等等。
Nacos 的数据隔离
因此 Nacos 帮我们实现了数据隔离:
· Namespace(命名空间)区分不同环境(默认为public)
· Group(分组)区分不同微服务
· Data-id(数据集)区分不同的配置文件
如图 dev 环境下的配置文件:
但我们需要通过写好配置文件来实现按需加载。
SpringBoot 配置文件实现按需加载
1. 如图 在 application.yaml 文件中进行基础配置:
其中:${表示将上面 spring.profiles.active 这里的配置项(prod)填充到这里},即选择生产环境。冒号后面的 public 表示如果没有配置 spring.profiles.active,则默认使用 public 环境。
config:
namespace: ${spring.profiles.active:public}
2. 多文档进行不同环境的配置
其中:
spring:
config:
import:
- nacos:common.properties?group=order
- nacos:database.properties?group=order
activate:
on-profile: dev
该配置表示当处于 dev (开发环境)的时候,需要引入: common.properties、database.properties 这两个配置文件。并且这两个文件的 group 为 order,也就是订单微服务下的配置文件。如果想要切换环境,只需要在这里对 prod(生产环境)进行修改即可: