Wiki-Framework v1.2.0 已经发布,Java 工具库。
维基框架(WikiFw)重大更新 v1.2.0 发布更新日志
发布日期:2026-06-25
版本升级:全模块 1.1.x → 1.2.0
最低 JDK 版本:JDK 17+(如需 JDK8 兼容请使用 1.0.7 及以下版本)
总体数据
| 项目 |
数量 |
| 变更文件 |
136 个 |
| 新增代码 |
+4782 行 |
| 删除代码 |
-1587 行 |
| 非合并提交 |
约 35 个 |
一、新增了哪些
1. wiki-datasource — MyBatis 主从读写能力(核心)
| 新增内容 |
说明 |
@Master / @Slave 注解 |
在 Mapper 上显式指定主库/从库 |
DataSourceAspect |
AOP 拦截 Mapper 调用,动态切换数据源 |
DynamicDataSource |
路由数据源,按上下文选择主/从 |
DataSourceContextHolder |
ThreadLocal 保存当前数据源类型 |
DataSourceType 枚举 |
MASTER / SLAVE |
MapperPrimaryScannerConfiguration |
主库 Mapper 独立扫描 |
MapperScannerConfiguration |
从库 Mapper 独立扫描 |
MybatisMapperScanSupport |
从 Environment 解析配置,避免早期绑定问题 |
2. socket/wiki-sse — SSE 模块(全新)
SseEmitterConnectionService — SSE 连接管理
SseEmitterCallback — 发布订阅回调
EmitterConstant — 常量定义
3. config/ — 配置中心模块重组
config/wiki-config — 自 wiki-config 迁出
config/wiki-nacos-config — Nacos 配置
config/wiki-nacos-cloud-config — Nacos Cloud 配置
ConfigureRefreshController — 配置刷新接口
4. security/wiki-oauth2 — OAuth2 监控与事件
MetricsConfig — Metrics 监控
TokenEventService / AuthorizationEventService — Token 与授权事件
AuthEventListener — 认证事件监听
MetricOAuth2AuthorizationServiceImpl — 带监控的授权服务
CustomOauth2AuthorizationService — 重构后的授权服务接口
5. wiki-util — HTTP 工具
HttpUtils — 新增 HTTP 请求工具类(约 400 行)
6. wiki-security — 用户与机构
IUserDetailsService — 用户详情服务接口
- 切换机构相关接口(需业务端实现)
SecurityUserEntity 多机构支持重构
7. 实体字段
AbstractUserEntity — 增加员工 ID
OrganizationEntity — 增加统一社会信用代码
8. 脚本与文档
wiki.ps1 — Windows 构建脚本
README.md / README.en.md — 文档大改
assets/wiki.png — 项目配图更新
二、优化了哪些
wiki-datasource(重点优化)
-
配置绑定
- 去掉
MybatisConfig 上多余的 @Configuration,避免重复 Bean、配置读不到
- Mapper 扫描改为
Environment + Binder,解决 BeanDefinitionRegistryPostProcessor 过早读配置、@RefreshScope 报错等问题
-
主从切换规则
- 有
@Master → 主库
- 有
@Slave → 从库
- 无注解 → 默认主库(不再靠类名含
slave 猜测)
- 每次切换打 INFO 日志:
数据源切换: MASTER/SLAVE -> xxxMapper.method()
-
双 SqlSessionFactory
primarySessionFactory(主库)+ sessionFactory(从库)
- 主从可分别配置 Mapper 包和 XML 路径
MybatisConfig 支持 master / slave 嵌套配置
-
稳定性
sqlSessionTemplate 明确绑定 primarySessionFactory
- SqlSessionFactory 初始化失败直接抛异常,避免返回 null
wiki-minio
MinioUtils 方法全部改为 静态方法,调用更简单(约 1100 行重构)
wiki-oauth2
- 授权服务拆分,增加 Metrics 与事件体系,便于监控和排查
wiki-cloud
- 新增
LoadBalancerRequestTransformerConfig,负载均衡请求转换
依赖与协议
- MySQL 驱动改为
test scope,避免 GPL 协议冲突
- LICENSE 更新为木兰宽松许可证
三、调整了哪些
| 模块 |
调整内容 |
| 版本 |
全项目 1.1.x → 1.2.0,各模块 pom.xml 同步 |
| 目录 |
wiki-config → config/wiki-config;删除历史配置目录 |
| 用户登录 |
支持多机构;登录成功后更新缓存 |
| 代码生成 |
FTL 模板包名、mapper.ftl 等引用修正 |
| MyBatis XML |
wiki-center 下 mapper XML 路径调整 |
| 全局响应 |
GlobalResponseHandler 增加对字符串返回的兼容 |
| Redis / Minio |
自动配置类小调整 |
| 构建脚本 |
wiki.sh、bin/install.sh、bin/package.sh、bin/javadoc.sh 更新 |
四、修改 / 修复了哪些
| 问题 |
修复 |
| Mybatis 主从连接 |
主从 Druid 数据源、MybatisDruidDbConfiguration 重构 |
| 配置读不到 |
MybatisConfig 重复注册、Mapper 扫描时序问题 |
ClassNotFoundException: com.mysql.cj.jdbc.Driver |
驱动需业务项目自行引入 mysql-connector-j(框架内为 test scope) |
| HTTPS ContentType |
HttpsClientUtils 创建错误修复 |
| 代码生成模板 |
引包错误修复 |
| SSE 发布订阅 |
成功/失败回调、消息内容返回等多次迭代 |
| OAuth2 |
JwtTokenFilter、AuthorizationServerConfig 等调整 |
五、wiki-datasource 变更一览
新增文件
@Master.java / @Slave.java
DataSourceAspect.java
DynamicDataSource.java / DataSourceContextHolder.java
DataSourceType.java
MapperPrimaryScannerConfiguration.java
MapperScannerConfiguration.java
MybatisMapperScanSupport.java
重点修改
| 文件 |
变更说明 |
MybatisConfig.java |
master/slave 嵌套配置,去掉 @Configuration |
MybatisAutoConfiguration.java |
@Bean 注册 Mapper 扫描 |
MybatisConfiguration.java |
双 SqlSessionFactory |
MybatisDruidDbConfiguration.java |
主从 Druid 数据源 |
pom.xml |
mysql-connector-j 改为 test scope |
主从切换逻辑
@Master 注解存在 → MASTER
@Slave 注解存在 → SLAVE
两者都没有 → MASTER(默认)
数据源切换日志
每次 Mapper 方法调用前输出 INFO 日志:
数据源切换: MASTER -> com.xxx.mapper.UserMapper.selectById()
数据源切换: SLAVE -> com.xxx.mapper.UserMapper.selectList()
六、业务侧配置与使用
application.yml 配置示例
spring:
datasource:
# 公共 Mapper 扫描包(主从共用)
mybatis-mapper:
- com.framewiki.example.mapper
# 公共 Mapper XML 路径
mybatis-mapper-xml:
- /mybatis/**/*.xml
# Druid 连接池参数(建议配置)
max-active: 20
initial-size: 5
min-idle: 5
filters: stat,wall
master:
url: jdbc:mysql://host:3306/db?characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
url: jdbc:mysql://host:3306/db?characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
Mapper 注解用法
// 默认主库,无需加注解
public interface RmsUserMapper {
RmsUser selectById(Long id);
}
// 显式走从库
public interface RmsUserQueryMapper {
@Slave
List<RmsUser> selectList();
}
// 从库 Mapper 上标了 @Slave,但某个写操作强制走主库
@Slave
public interface RmsUserSlaveMapper {
@Master
int updateStatus(Long id);
}
启用方式
在启动类上添加:
@EnableAutoMybatis
@SpringBootApplication
public class Application { }
MySQL 驱动依赖(必须自行引入)
wiki-datasource 模块内 mysql-connector-j 为 test scope,业务项目需自行添加:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
若未引入,会出现 ClassNotFoundException: com.mysql.cj.jdbc.Driver,这与配置是否读取成功无关。
七、模块变更文件统计(按目录)
| 目录/模块 |
主要变更 |
datasource/wiki-datasource |
主从数据源全套能力 + 测试 |
socket/wiki-sse |
全新 SSE 模块 |
config/ |
配置中心重组 |
security/wiki-oauth2 |
OAuth2 监控与事件 |
security/wiki-security |
多机构用户登录 |
wiki-util |
HttpUtils |
wiki-minio |
MinioUtils 静态化 |
wiki-entity |
用户/机构字段扩展 |
wiki-center |
代码生成模板、MyBatis XML |
wiki-cloud |
负载均衡配置 |
全模块 pom.xml |
版本升至 1.2.0 |
LICENSE |
协议更新 |
README / 脚本 |
文档与构建脚本更新 |
详情查看:https://gitee.com/cdkjframework/wiki-framework/releases/v1.2.0