image.png配置中心

项目基于 Apollo实现配置中心,并提供 [基础设施 -> 配置管理] 菜单,支持配置的动态修改,启动中的 JVM 无需重启即可加载到修改后的配置。
image.png

  • ykkj-spring-boot-starter-config技术组件:魔改 apollo-client客户端,读取本地数据库的 infra_config 表,支持配置的热加载。
  • ykkj-module-infra 的 module/infra/service/config/业务模块,提供配置的管理,支持增删改查操作。

    1. 配置的表结构

    infra_config 的表结构如下: ``sql CREATE TABLEinfra_config(idint NOT NULL AUTO_INCREMENT COMMENT '参数主键',groupvarchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '参数分组',typetinyint NOT NULL COMMENT '参数类型',namevarchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数名称',keyvarchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数键名',valuevarchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数键值',sensitivebit(1) NOT NULL COMMENT '是否敏感',remarkvarchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',creatorvarchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',create_timedatetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',updatervarchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',update_timedatetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',deletedbit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT=’参数配置表’;

```

  • key 字段,对应到 Spring Boot 配置文件的配置项,例如说 ykkj.captcha.enable、sys.user.init-password 等等。

🙄 注意,infra_config 的配置优先级,高于 Spring Boot 配置文件。 例如说,在 infra_config 表的 ykkj.captcha.enable 为 true,而 application.yaml 配置文件的 ykkj.captcha.enable 为 false 时,最终程序读取到的结果是 true。

2. Apollo Config 配置

在 application-local.yaml配置文件中,通过 apollo 配置项,重点配置 infra_config 表所在的数据库。如下图所示:
image.png

3. 后端案例

以登录时的验证码开关 ykkj.captcha.enable 举例子,讲解配置中心的使用。

3.1 注入配置

在 /module/system/service/common/CaptchaServiceImpl.java中,使用 Spring @Value 即可注入 ykkj.captcha.enable 配置项。如下图所示:
image.png

3.2 测试配置

① 调用 /admin-api/system/captcha/get-image RESTful API 接口,返回验证码处于【开启】状态。如下图所示:
image.png
② 访问 [基础设施 -> 配置管理] 菜单,将配置项 ykkj.captcha.enable 修改为 false。如下图所示:
image.png
③ 调用 /admin-api/system/captcha/get-image RESTful API 接口,返回验证码处于【禁用】状态。如下图所示:
image.png

4. 前端案例

后端提供了 /admin-api/infra/config//get-value-by-keyRESTful API 接口,返回指定配置项的值。前端的使用示例如下图:
image.png