Solon v3.0.3

七、环境切换及加载更多配置

</> markdown

1、环境切换

日常开发时,一般会有开发环境、预生产环境、生成环境等。开发时,可以定义不同环境的配置。环境配置文件的格式为:"app-{evn}.yml" 或 "app-{evn}.properties" ,比如:

配置文件说明
app.yml应用主配置文件(必然会加载)
app-dev.yml应用开发环境配置文件
app-pro.yml应用生产环境配置文件

可以在主配置文件指定 "solon.env" 属性,实现切换环境配置文件:

#主配置文件指定
solon.env: dev

或者,启动时用系统属性指定:

java -Dsolon.env=pro -jar demo.jar 

或者,启动时用启动参数指定:

java -jar demo.jar --env=pro

2、加载更多的配置

添加多个内部配置(在 app.yml 之外,添加配置加载)//v2.2.7 后支持

solon.config.load: 
  - "app-ds-${solon.env}.yml"     #可以是环境相关的
  - "app-auth_${solon.env}.yml"
  - "config/common.yml"           #也可以环境无关的或者带目录的

3、通过代码加载更多的配置

在应用启动类加载配置

//通过注解添加 (需要加在启动类上)
@Import(profiles = "classpath:demo.xml") 
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app -> {
            //启动时,通过接口添加
            app.cfg().loadAdd("app-jdbc-" + app.cfg().env() + ".yml");
            app.cfg().loadAdd("app-cache-" + app.cfg().env() + ".yml");
        });
    }
}

在模块插件里加载配置

//在插件里,通过接口添加
public class DemoPlugin impl Plugin{
    @Override
    public void start(AppContext context){
         //一般用于添加模块内部的配置
        context.cfg().loadAdd("demo.xml") 
    }
}

直接注入到某个配置类

@Inject("${classpath:demo.xml}")
@Configuration
public class DemoConfig {
    ...
}