(内部、外部)多配置的加载规则与顺序
应用配置的加载主要分了六个层级,其加载规则为:
- 越静态的越前面
- 越动态的越后面(以配置“键”为单位,后面加载的会盖掉前面加载的)
具体顺序为:
(L1)主配置文件
- 应用属性配置
即内部的 "app.yml"、"app.properties"。
- 应用环境属性配置
即内部带环境标记的 "app-xxx.yml"、"app-xxx.properties"(如:"app-dev.yml","app-pro.yml")。
(L2)内部资源扩展配置文件
- 通过 "solon.config.load" 添加的内部资源配置文件
solon.config.load:
- "classpath:${solon.env}/jdbc.yml"
- "classpath:${solon.env}/*.yml" #v2.7.6 后支持 * 表达式
- "classpath:common/*.yml" #v2.7.6 后支持 * 表达式
- "classpath:docs.yml"
(L3)外部本地扩展配置文件(额外再加)
一般把 “需要修改的内容” 提练为 “外部配置文件”。方便部署时修改!
- 通过 “solon.config.add” 添加的外部配置文件
solon.config.add: "./demo.yml" #会加载 jar 边上的 demo.yml 配置文件(多个用","隔开)
或者在启动时指定:
java -jar demo.jar --solon.config.add=./demo.yml
java -Dsolon.config.add=./demo.yml -jar demo.jar
(L4)动态配置
- 启动参数
java -jar demo.jar -debug=1
- 系统属性
java -Dsolon.config.add=./demo.yml -jar demo.jar
- 环境变量(比如编排容器时)
services:
demoapi:
image: demo/demoapi:1.0.0
container_name: demoapi
environment:
- solon.stop.safe=1
- TZ=Asia/Shanghai
ports:
- 8080:8080
"solon" 开头的环境变量,会被框架同步到系统属性(System::getProperties)与应用属性(Solon::cfg)。
(L5)启动初始化时接口加载的配置
- 加载配置文件
Solon.start(App.class, args, app->{
app.cfg().loadAdd("demo.yml");
});
- 加载环境变量(打包 docker 镜像时,非常方便)
Solon.start(App.class, args, app->{
//通过前缀加载环境变量
app.cfg().loadEnv("demo.");
});
(L6)云端配置(Solon Cloud Config)
- 以 nacos-solon-cloud-plugin 为例:
solon.cloud.nacos:
config:
load: "jdbc.yml,auth.yml"