配置管理相关表
引用文件
本文引用的文件
- sql/mysql/ik_yudao_base.sql
- sql/oracle/ruoyi-vue-pro.sql
- sql/dm/ruoyi-vue-pro-dm8.sql
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
- yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImplTest.java
目录
简介
本文件聚焦于配置管理模块的核心表结构与关键流程,围绕“参数配置表(infra_config)”展开,系统化说明其字段定义、数据类型、约束条件与业务含义;并结合后端控制器、服务层、数据对象与映射器,阐述配置的分类管理、动态配置更新、可见性控制与生效机制。同时提供表结构图、字段说明、典型数据示例与常见操作模式,帮助读者快速理解与落地配置管理能力。
项目 结构
配置管理相关的核心代码与数据库脚本分布如下:
- 数据库脚本:覆盖 MySQL、Oracle、DM 等多数据库方言的 infra_config 表结构与初始化数据
- 后端模块:infra 模块的 controller、service、mapper、dataobject、api 等层次清晰的分层设计
- 测试用例:覆盖配置的增删改查、键唯一性校验、可见性限制等关键行为
图表来源
- sql/mysql/ik_yudao_base.sql
- sql/oracle/ruoyi-vue-pro.sql
- sql/dm/ruoyi-vue-pro-dm8.sql
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
章节来源
- sql/mysql/ik_yudao_base.sql
- sql/oracle/ruoyi-vue-pro.sql
- sql/dm/ruoyi-vue-pro-dm8.sql
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
核心组件
- 参数配置表(infra_config)
- 作用:统一存储系统与业务的配置项,支持按分类、类型、可见性进行管理
- 关键特性:键唯一、可见性控制、软删除、时间戳与操作人字段
- 数据对象(ConfigDO)
- 映射 infra_config 表,包含主键、分类、名称、键名、键值、类型、可见性、备注等字段
- 控制器(ConfigController)
- 提供创建、更新、删除、查询、分页、导出、按键取值等接口
- 服务实现(ConfigServiceImpl)
- 校验配置存在性与键唯一性,区分系统配置与自定义配置,处理删除限制
- 映射器(ConfigMapper)
- 提供按键查询与分页查询能力
- RPC 接口(ConfigApi)
- 对外暴露按键取值的远程调用能力
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
架构总览
配置管理的前后端交互与数据流转如下:
图表来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- sql/mysql/ik_yudao_base.sql
详细组件分析
表结构:参数配置表(infra_config)
- 字段定义与约束
- id:主键,自增(不同数据库方言差异见下方)
- category:参数分组,字符串,非空
- type:参数类型,整型,非空(系统配置/自定义配置)
- name:参数名称,字符串,非空默认值
- config_key:参数键名,字符串,非空默认值,全局唯一
- value:参数键值,字符串,非空默认值
- visible:是否可见,布尔/位,非空,默认不可见
- remark:备注,字符串
- creator/updater:创建者/更新者,字符串
- create_time/update_time:创建/更新时间,带默认值与自动更新
- deleted:软删除标志,布尔/位,非空,默认未删除
- 业务含义
- 分类(category):用于配置的逻辑分组(如 biz、url、ui 等)
- 类型(type):区分系统内置配置与业务自定义配置
- 可见性(visible):控制前端是否可获取该配置值
- 键唯一(config_key):保证配置键的全局唯一,避免冲突
- 初始化数据示例
- 包含系统初始密码、监控地址、地图密钥等示例键值对
图表来源
章节来源
- sql/mysql/ik_yudao_base.sql
- sql/oracle/ruoyi-vue-pro.sql
- sql/dm/ruoyi-vue-pro-dm8.sql
- sql/mysql/ik_yudao_base.sql
数据模型与类关系
图表来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
配置分类管理
- 分类字段(category)
- 用于对配置进行逻辑分组,便于检索与治理
- 示例:biz(业务)、url(外部链接)、ui(界面)、test2(测试)
- 类型字段(type)
- 枚举区分系统配置与自定义配置
- 系统配置不允许被删除,自定义配置可增删改
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/config/ConfigTypeEnum.java
动态配置更新与生效机制
- 更新流程
- 控制器接收保存请求,调用服务层更新方法
- 服务层先校验配置存在性与键唯一性,再执行更新
- 生效机制
- 更新后立 即生效,键唯一性保障不会产生重复键
- 可见性控制:不可见配置不会返回给前端
图表来源
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
配置键值对、类型、状态、描述等字段说明
- 配置键值对
- config_key:全局唯一键,作为查询入口
- value:实际存储的配置值
- 配置类型
- type:系统配置/自定义配置,影响可删除性
- 配置状态
- 通过可见性(visible)与软删除(deleted)间接体现状态
- 配置描述
- name:配置名称
- remark:备注说明
- 时间与操作人
- create_time/update_time:自动维护
- creator/updater:记录操作人
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- sql/mysql/ik_yudao_base.sql
典型数据示例
- 初始配置示例(来自数据库脚本)
- 初始密码、监控地址、地图密钥等键值对
- 示例字段取值
- category:biz/url/ui/test2 等
- type:1(系统)、2(自定义)
- visible:0/1(不可见/可见)
章节来源
配置管理场景下的数据操作模式
- 创建配置
- 校验键唯一性 → 设置类型为自定义 → 插入记录 → 返回主键
- 查询配置
- 按主键查询、按键查询、分页查询(支持名称、键、类型、时间范围过滤)
- 更新配置
- 校验存在性与键唯一性 → 执行更新
- 删除配置
- 校验存在性 → 若为系统类型则拒绝删除 → 执行删除
- 获取值
- 按键查询 → 若不可见则拒绝返回
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
依赖关系分析
- 控制器依赖服务层,服务层依赖映射器,映射器持久化到数据库
- ConfigApi 通过 Feign 远程调用 ConfigServiceImpl,实现跨模块/微服务的配置读取
- ConfigDO 统一承载 infra_config 的字段,确保各层一致
图表来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java
章节来源
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/config/ConfigController.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/config/ConfigServiceImpl.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
- yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java
- yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApi.java