1. 配置中心 Nacos
项目使用 Nacos 作为配置中心,实现配置的动态管理。
1.1 搭建 Nacos Server
① 参考《芋道 Nacos 极简入门》 (opens new window)文章的「2. 单机部署(最简模式)」或「3. 单机部署(基于 MySQL 数据库)」小节。
② 点击 Nacos 控制台的 [命名空间] 菜单,创建一个 ID 和名字都为 dev
的命名空间,稍后会使用到。如下图所示:
1.2 项目接入 Nacos
友情提示:以 yudao-module-system 服务为例子。
1.2.1 引入依赖
在 yudao-module-system-biz
模块的 pom.xml
(opens new window) 中,引入 Nacos 对应的依赖。如下所示:
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
|
1.2.2 添加配置
在
bootstrap-local.yaml
(
opens new window) 中,添加 nacos.config
配置。如下所示:
1 2 3 4 5 6 7 8 9 10 11 12
| ---
spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 namespace: dev group: DEFAULT_GROUP name: file-extension: yaml
|
spring.cloud.nacos.config.namespace
配置项:设置为 dev
,就是刚创建的命名空间
1.2.3 配置管理
① 参考《芋道 Spring Cloud Alibaba 配置中心 Nacos 入门 》 (opens new window)文档,学习 Nacos 配置中心的使用。
② 按照需要,将不同环境存在差异的 application-local.yaml
(opens new window) 和 application-dev.yaml
(opens new window) 中的配置,迁移到 Nacos 配置中心。
一般情况下,不建议将 application.yaml
中的配置,迁移到 Nacos 配置中心。因为 application.yaml
中的配置,是通用的配置,无需动态管理。
疑问:为什么项目中的 `application-{env}.yaml` 中的配置,没有放到 Nacos 配置中心中?
主要考虑大家 《快速启动》 可以更简单。
实际项目中,是建议放到 Nacos 配置中心,进行配置的动态管理的。
操作过程中,可能会碰到的问题:
2. 配置管理
友情提示:该功能是从 Boot 项目延用到 Cloud 项目,一般情况下不会使用到,使用 Nacos 管理配置即可。
在 [基础设施 -> 配置管理] 菜单,可以查看和管理配置,适合业务上需要动态的管理某个配置。
例如说:创建用户时,需要配置用户的默认密码,这个密码是不会变的,但是有时候需要修改这个默认密码,这个时候就可以通过配置管理来修改。
对应的后端代码是 yudao-module-infra
的 config
(opens new window) 业务模块。
2.1 配置的表结构
infra_config
的表结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| CREATE TABLE `infra_config` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键', `group` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '参数分组', `type` tinyint NOT NULL COMMENT '参数类型', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数名称', `key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数键名', `value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '参数键值', `sensitive` bit(1) NOT NULL COMMENT '是否敏感', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(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 配置文件的配置项,例如说 yudao.captcha.enable
、sys.user.init-password
等等。
2.2 后端案例
TODO 芋艿:待补充
2.3 前端案例
后端提供了 /admin-api/infra/config/get-value-by-key
(opens new window) RESTful API 接口,返回指定配置项的值。前端的使用示例如下图: