基于数据库的动态配置中心,支持运行时配置刷新,无需重启服务。
<dependency>
<groupId>com.mdframe.forge</groupId>
<artifactId>forge-starter-config</artifactId>
</dependency>
@RefreshScope@Component
@RefreshScope
@ConfigurationProperties(prefix = "app")
@Data
public class AppConfigExample {
private String name;
private String version;
private Boolean featureEnabled;
}
配置中心内置以下配置类别,支持通过 REST API 管理:
| 配置类 | 说明 | 主要字段 |
|---|---|---|
LoginConfig |
登录配置 | enableCaptcha, captchaType, enableRememberMe, rememberMeDays, enableIpLimit, ipWhitelist |
SecurityConfig |
安全策略 | 包含 SaTokenConfig(token 超时、并发策略)和 PasswordPolicyConfig(密码强度、过期策略) |
SystemConfig |
系统配置 | systemName, systemVersion, copyright, enableWatermark |
WatermarkConfig |
水印配置 | enable, content, opacity, fontSize, fontColor, rotate |
配置管理接口位于 /api/config/manage:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /login |
获取登录配置 |
| PUT | /login |
更新登录配置 |
| GET | /watermark |
获取水印配置 |
| PUT | /watermark |
更新水印配置 |
| GET | /security |
获取安全配置 |
| PUT | /security |
更新安全配置 |
| GET | /system |
获取系统配置 |
| PUT | /system |
更新系统配置 |
| POST | /refresh |
手动触发配置刷新 |
| 表名 | 说明 |
|---|---|
sys_config_group |
配置分组表,存储 JSON 格式的配置 |
sys_config |
配置项表(key-value 格式) |
启动时 ConfigSyncService 会自动将 sys_config_group 中的配置同步到 sys_config 表。
启动时: DbPropertySourcePostProcessor → 加载 sys_config → DbPropertySource
运行时: ConfigRefresher.refresh() → 更新 DbPropertySource → refreshScope.refreshAll() → 发布 ConfigRefreshEvent
// 1. 定义配置类
@Component
@RefreshScope
@ConfigurationProperties(prefix = "my.module")
@Data
public class MyModuleConfig {
private Boolean enabled;
private Integer timeout;
}
// 2. 注册到 ConfigManagerService
// 在 ConfigManagerService 中添加 get/save 方法
// 3. 注册到 ConfigConverter
// 在 ConfigConverter 中添加 convert 方法,将配置转为 key-value 格式存入 sys_config
// 4. 在 SysConfigGroup 中维护配置组
配置刷新后会发布以下事件:
ConfigRefreshEvent — 携带旧配置和新配置EnvironmentChangeEvent — Spring Environment 变更事件数据库连接信息可通过配置指定:
config:
datasource:
url: jdbc:mysql://localhost:3307/forge_admin
username: root
password: root
driverClassName: com.mysql.cj.jdbc.Driver