Solon v3.0.6

(内部、外部)多配置的加载规则与顺序

</> markdown

应用配置的加载主要分了六个层级,其加载规则为:

  • 越静态的越前面
  • 越动态的越后面(以配置“键”为单位,后面加载的会盖掉前面加载的

具体顺序为:

(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)

solon.cloud.nacos:
  config:
    load: "jdbc.yml,auth.yml"