七、环境切换及加载更多配置
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 {
...
}