配置中心
配置 APP 仓库地址 sie-snest-config-project
需求
之前 IIDP 的配置都来自于 application.properties。如果 APP 想要增加自己的配置,也需要添加到 application.properties,而这样会导致配置文件堆积大量的配置。并且有可能导致冲突。
配置中心目前实现三点功能
- APP 可以将配置写到自己的 APP 里面,从而避免跟其他 APP 的配置造成命名冲突。
- 提供配置中心页面,可以在页面上动态修改配置,从而实现不停机动态修改 APP 的行为。
- 必填校验。APP 可以可以将配置项声明为必填项,那么从应用市场安装的时候会校验配置是否有值,如果没有填写值,将会安装失败。
使用例子
实现设计
声明配置
在 app.json 填入配置
"globalConfig": {
"backendUrl": {
"desc": "微服务后端URL",
"value": "http://localhost"
}
},
"appConfig": {
"test": {
"desc": "测试配置",
"value": "123",
"required": true
}
}
配置分为两类
- globalConfig a. 由平台定义,一般是引擎有特殊用途的配置。
- appConfig a. 由 APP 自行定义,由 APP 业务上使用。
配置项说明
- desc: 配置项的说明
- 对于 globalConfig,desc 并不是必须的,因为平台开发者在引擎声明 GlobalConfig 的同时就写了描述。
- value: 配置值,必须为字符串
- required: 配置是否必填。如果为 true,那么应用安装的时候需要先填写配置项才能安装
使用示例
升级说明
在 apps 的 apps.json 添加 sie-snest-config 。
"apps": {
"SDK": [
"sie-snest-base-1.0-SNAPSHOT.jar",
"sie-snest-file-1.0-SNAPSHOT.jar",
"sie-snest-dict-1.0-SNAPSHOT.jar",
"sie-snest-log-2.0-SNAPSHOT.jar",
"sie-snest-config-1.0-SNAPSHOT.jar"
]
}
系统配置
声明配置
平台开发人员如果想要新增配置,在可以在 com.sie.snest.engine.config.GlobalConfig 这个枚举类中添加配置项。
因为 GlobalConfig 这个类是在引擎工程里,所以只有平台开发人员可以声明配置项。
使用配置
Optional<String> frontendUrl = ConfigUtils.getGlobalConfig(appName, appTag, GlobalConfig.FRONTEND_URL);
APP 设置系统配置
在 app.json 里面设置值
"globalConfig": {
"frontendUrl": {
"desc": "微服务前端URL",
"value": "http://localhost"
}
}
系统配置也可以设置为 required = true,这样安装 APP 的时候会校验是否填写了配置值。
应用配置
声明配置
APP 的配置只需要在 app.json 里面声明。
"appConfig": {
"test": {
"desc": "测试配置",
"value": "",
"required": true
}
}
如果 value 为空字符串,required = true。应用上架的时候,该配置项默认为空,需要在配置中心填写了配置值后,才能安装。这样保证了应用安装完成后,在启动事件也能拿到对应的值。
使用配置
Optional<String> test = ConfigUtils.get(appName, appTag, "test");
配置中心
在开发者中心 - 配置中心,可以动态修改所有配置。并且配置会保存到数据库。
必填配置
如果配置项的 required 为 true。上架的时候,会校验 value 是否有值,如果没有值会提示先填写配置值。在配置中心修改保存的时候,也会校验是否有填写值。
"appConfig": {
"test": {
"desc": "测试配置",
"value": "",
"required": true
}
}
安装前校验
修改配置时校验