docs/releases/v1.0.6.md 自动同步生成;正文保留来源仓库的技术表述与历史名称。状态:发布草稿,构建验证未通过,暂不可正式发布。
整理日期:2026-10-30
目标版本:根 POM revision=1.0.6。
比较范围:v1.0.5..ce3b982。
本次版本聚焦依赖基线更新、Feign 调试日志可读性及 Web 登录守卫校验。项目继续按需提供 11 个 Starter 模块;根工程是聚合 POM,不应作为一个包含全部能力的业务 JAR 引入。
# 主要变化
# 1. 更新依赖与构建基线
| 项目 | v1.0.5 | v1.0.6 POM 声明 |
|---|---|---|
| Java release | 25 | 25 |
| Spring Boot | 4.0.5 | 4.1.2 |
| Spring Cloud | 2025.1.1 | 2025.1.4 |
| g2rain-common | 1.0.8 | 1.0.9 |
| MyBatis 扩展 / 分页组件 | 1.0.4 | 1.0.5 |
| Jackson 3 BOM | 3.1.1 | 3.2.4 |
| Jackson 2 BOM | 未显式导入该 BOM | 2.22.4 |
| Redisson Starter | 4.3.0 | 4.8.0 |
| MyBatis | 3.5.19 | 3.6.0 |
| MyBatis Spring Boot Starter | 4.0.1 | 4.1.0 |
| SpringDoc | 3.0.2 | 3.2.0 |
| Caffeine | 3.2.3 | 3.3.1 |
更新部分构建、检查及发布插件的版本属性,包含 Flatten 与 Central Publishing 插件。移除根工程和部分消息模块对 JetBrains annotations 等依赖的旧式显式覆盖。实际解析版本以 effective POM 与依赖树为准;不能将上述版本声明等同于完整兼容性或安全扫描结论。
# 2. 改善 Feign 主体名称日志
g2rain-starter-feign-plus 在请求与响应的 Debug 日志中,对主体名称及组织名称 Header 的日志副本进行 URL 解码,便于读取中文名称。
- 仅对
x-name、x-organ-name对应值进行解码。 - 不回写请求模板或响应原始 Header,不改变实际传输编码。
- 这不是通用敏感信息脱敏功能;生产环境开启 Debug 日志前仍需检查 Header 与正文记录范围。
# 3. 收紧登录主体有效性判断
g2rain-starter-web-infra 的登录守卫按会话类型读取主体 ID,要求 ID 存在且大于零:
| 会话类型 | 校验字段 |
|---|---|
| USER、ANONYMOUS | userId |
| PASSPORT | passportId |
| MEMBER | memberId |
无有效主体 ID 时返回未认证错误。方法显式使用 @LoginGuard(require = false) 时仍跳过此登录校验;既有后台调用、非 Controller 方法及非 REQUEST 派发的处理分支保持。
本次新增 ANONYMOUS 会话具备正数 userId 时通过、缺少 userId 时拒绝的回归测试,并更新注解文档中对旧 anonymous 参数的描述;当前注解仅提供 require 属性。
# 升级注意事项
- 不是无条件向下兼容的依赖替换。 Spring Boot、Spring Cloud、Jackson、MyBatis 与 Redisson 均有基线变化,业务应用须核对依赖树、配置和自动配置结果。
- 匿名会话行为有变化。 v1.0.5 的 ANONYMOUS 分支直接放行;本次要求正数 userId。无主体的公开接口需要明确设计认证策略。不要为绕过失败而批量关闭登录守卫。
- USER 与 PASSPORT 从“非空 ID”收紧为“正数 ID”,需要检查零值或负值占位数据。
- MyBatis 数据隔离、Redis/消息、远程服务和链路追踪需要在实际环境联调;本次没有完成这些集成验证。
- SpringDoc 模块在本次比较范围内没有新增,不能把已有模块误写成本版新功能。
# Maven 引入方式
以下为目标版本示例,不表示 v1.0.6 已发布到 Maven Central;正式发布前不要据此切换生产依赖。
<dependency>
<groupId>com.g2rain</groupId>
<artifactId>g2rain-starter-web-infra</artifactId>
<version>1.0.6</version>
</dependency>
其他 Starter 按实际需要选择,目标版本统一为 1.0.6,不要把聚合 POM 当作导入全部模块的 BOM 使用。
# 本次验证与发布阻断
2026-10-30 在 Windows、Oracle JDK 25.0.2、Maven 3.9.6 环境执行:
mvn -B clean verify
结果:BUILD FAILURE。
- 根聚合工程、Web Infra 与 Identity Client 的 Reactor 阶段成功。
- Web Infra 的 Surefire XML 报告共 51 项测试,0 失败、0 错误、0 跳过;其中 LoginGuardInterceptorTest 为 13 项。
g2rain-starter-tracing-otel编译失败:OpenTelemetryTracingAutoConfiguration.java导入的com.g2rain.common.concurrent.ContextPropagator与Contexts所属包在本次解析的编译依赖中不存在。- 其后 8 个 Reactor 项目跳过,不能声明整个套件测试通过,也不能沿用旧文档中的 101 项测试作为本版本验证结果。
- 本次未验证 GPG 签名、Central 发布、生产环境或完整跨服务兼容性;未执行 deploy。
发布前需核对实际解析的 g2rain-common 制品与源码/版本是否一致,确认其包含需要的上下文传播 API,再重新执行完整 verify。不要仅以本地源码中存在相关类来替代制品验证,也不要跳过失败模块直接发布。
# 正式发布检查
- [ ] 修复上下文传播依赖阻断,完整 Reactor verify 通过。
- [ ] 固定发布提交,确认 README、CHANGELOG、POM 和目标标签一致。
- [ ] 确认 g2rain-common 及 MyBatis 目标依赖已经在目标仓库可用。
- [ ] 完成关键业务应用的升级回归与真实外部依赖验证。
- [ ] 检查源码、Javadoc、签名与 Central 凭据。
- [ ] 经维护者确认后再创建或推送 v1.0.6 标签、触发正式发布工作流。
推送版本标签或手动运行 release 工作流会触发 Maven Central 发布。本草稿生成不包含这些外部操作。