Releases: KyrieChao/Failure
Releases · KyrieChao/Failure
Release v1.9.0 - 异步验证引擎 & Spring AOT 原生镜像支持
🚀 新特性
异步验证引擎
- 新增
failAsync()- 异步单规则快速失败 - 新增
failAllAsync()- 异步全规则收集 - 新增
verifyAsync()- 异步验证执行 - 完整的异步单元测试覆盖与边界条件处理
Spring AOT 原生镜像支持
- 添加运行时提示配置 (
RuntimeHints) - 完整支持 GraalVM Native Image 编译
性能优化
- 新增栈跟踪修剪功能,减少异常创建开销
- 对象图遍历逻辑重构至独立
ObjectGraphWalker类
开发者体验
- 添加控制台调试输出,链式调用状态一目了然
- 核心类结构优化(
Business移至exception包并开放构造)
🔧 内部重构
Chain类迁移至internal.core包,模块边界更清晰- 递归验证逻辑解耦,维护性提升
Release v1.8.1 - Scope API 优化与追踪ID默认禁用
✨ 优化
追踪ID默认行为变更
fail-fast.trace-id.enabled默认值由true改为false- 如需启用追踪ID,请显式配置:
fail-fast: trace-id: enabled: true
- 优化追踪ID功能的条件判断逻辑,减少不必要的 MDC 操作
- 更新 API 文档中
Scope相关方法说明 - 同步更新测试代码至新 API
📦 迁移指南
Before:
scope.notBlank(field, code).done();After:
scope.notBlank(field, code).merge();Release v1.8.0 - 场景分组控制 + JSR-303 生态桥接
🚀 Failure Validation Framework v1.2.0
✨ 新特性 (Features)
场景与分组控制
- 新增
whenScene(String)/inScene(String...)- 条件场景校验 - 新增
whenGroup(Class<?>)/inGroup(Class<?>...)- 分组校验支持
元素级精细校验
- 新增
forEach元素级校验,支持集合逐项验证 - 新增
Scope<T>方法清单,完善链式 API 类型支持
生态兼容与扩展
- ✅ JSR-303 桥接支持 - 兼容标准 Bean Validation 注解
- ✅ 递归校验 - 嵌套对象深度验证
- ✅ OpenAPI 集成 - 文档约束自动生成
- ✅ 验证观察器 - 验证生命周期监听
Spring 集成增强
- 新增
method-validation.enabled配置开关 - 扩展错误码映射,支持
constraint-mappings自定义配置
📋 文档与示例
- 重构 API 文档,新增「配置参考」和「生态集成」章节
- 添加多种约束映射规则配置示例
Release v1.7.2 - 重构异常处理体系,支持 Code:Message 格式与类型继承验证
🔥 重构异常体系,支持 Code:Message 格式
核心增强
- ✨ 支持
CODE:Message结构化消息(如USER_001:用户名不能为空),自动解析为ParsedValidationMessage - 🚀 类型继承处理器选择 + 缓存机制,性能提升 30%+
- 🎯 精确空值检查:
notNull()/notEmpty()/notBlank()分层处理 - 🌍 Result 构造函数内置国际化支持
- ♻️ ValidationContext 可重置复用
Release v1.7.1 - 性能基准测试发布 | 品牌统一为 Failure
🔥 重要更新
品牌统一
项目名称从 "Fail-Fast" 全面统一为 "Failure",包括文档、注释及 Maven 坐标标识。
性能测试体系
新增完整性能基准测试套件,提供可复现的延迟测试数据及自动化报告生成。
✨ 新特性
- 新增性能测试报告
PERFORMANCE_TEST.md - 提供自动化测试脚本(
run_benchmarks.py/analyze.py) - README 新增性能数据索引
🐛 问题修复
- 修复 TypedValidator 在上下文为 null 时的空指针异常
- 修复 Maven 编译插件 includes 配置导致的构建问题
Release v1.7.0 - refactor(core): 重构错误处理机制,引入策略化配置与懒加载支持
🚀 新功能
1. 策略化错误处理(ErrorPolicy)
- 新增
ErrorPolicy接口,支持自定义错误处理策略 - 可插拔配置:全局默认策略 or 单次覆盖
2. 参数对象收敛(CheckSpec)
- 新增
CheckSpec类统一处理code/detail/invalidValue - 消除重载爆炸,降低维护成本
3. 懒加载支持
check()方法支持Supplier形式条件判断- 延迟
invalidValue快照,提升性能(高频验证场景)
🔧 内部优化
- 重构
ArrayTerm、CollectionTerm等验证方法内部调用逻辑 - 移除冗余测试文件,整合至
ChainBranchCoverageTest - 完善
ErrorPolicy自定义配置文档
Release v1.6.0 - 添加国际化支持与调试快照功能
🚀 新功能
国际化支持 (I18n)
- 集成多语言错误信息显示
- 支持中英文切换,自动根据请求头 Accept-Language 识别
- 可配置默认语言和可用语言列表
调试快照
- 记录导致异常的参数值,便于问题定位
- 添加敏感数据脱敏功能(手机号、邮箱、身份证等)
- 支持配置是否开启调试模式
新增校验规则
- JSON 格式校验
- Base64 编码校验
- 信用卡号格式校验
🔧 改进
- 重构异常处理流程,统一国际化消息解析
- 优化配置属性结构,新增
failure.debug相关配置 - 调整自动配置,按需导入国际化组件
- 优化错误信息格式化输出
🛠️ 工程
- 添加 GitHub issue 模板
- 更新 .gitignore 配置
- 移除未使用的注解配置文件
⚠️ 破坏性变更
无,向下兼容
Release v1.5.1 - 简化校验 API 并添加流控制
🚀 改进
API 简化
- 移除
Consumer<Business.Fabricator>重载形式,统一使用ResponseCode参数 - 简化校验方法签名,降低使用复杂度
- 方法重载形式从四种减少到三种,更清晰易用
流控制功能
- 新增
stopOnFail()- 遇到错误立即停止后续校验,防止 NPE - 新增
resume()- 恢复继续校验模式
内部重构
- 重构
failNow方法,移除不必要的回调形式 - 简化内部
check方法实现,优化错误处理流程
⚠️ 破坏性变更
Consumer<Business.Fabricator> 参数形式已移除,请迁移至 ResponseCode 参数形式。
迁移示例:
// 旧写法(已移除)
.notNull(obj, f -> f.code(400).message("错误"))Release v1.5.0 - 流程控制与延迟校验增强
v1.5.0 - 校验链流程控制与延迟优化 (2026-03-02)
本次发布大幅提升了校验链的灵活性与性能,主要新增了条件控制、延迟执行以及更智能的 or 逻辑处理。
✨ 新增功能
when(boolean condition):动态控制后续校验是否执行false→ 跳过后续所有校验,直到遇到when(true)或链结束true→ 恢复正常执行流程
defer(Supplier<Result<?>>):延迟执行昂贵的校验逻辑
仅在前置校验全部通过(未跳过、未失败)时才真正调用,适合数据库、网络、复杂计算等场景or()在流程控制下的智能跳过:
当链被when(false)跳过时,or分支也会被正确跳过,避免无意义计算
🛠️ 改进与修复
- 修复
Results类在多层异常捕获时消息(detail)传递丢失的问题 - 完善 API 文档,新增「流程控制」「延迟校验」「or 降级策略」完整章节与示例
- 内部状态机优化,确保
when/defer/or在各种组合场景下行为一致
📖 快速上手示例
Failure.begin()
.when(isVip) // 只有 VIP 才检查专属规则
.check(vipExclusiveRule)
.when(true) // 恢复通用校验
.check(commonRule1)
.check(commonRule2)
.defer(() -> checkDatabase(id)) // 延迟查库,只有前面都通过才执行
.or(() -> softCheckFromCache(id)) // 查库失败 → 尝试缓存降级
.or(() -> Result.ok()) // 最终兜底成功
.toResult();🧪 测试覆盖
- when 跳过 / 恢复的多种组合
- defer 懒执行验证(包含跳过时不执行、失败时不执行)
- or 在跳过链中的短路行为
- 异常消息完整性回归测试
建议所有使用复杂校验链的项目升级到 v1.5.0。
升级方式:
<dependency>
<groupId>com.chao.failfast</groupId>
<artifactId>result</artifactId>
<version>1.5.0</version>
</dependency>Release v1.4.0 - 更完善的函数式 Result 处理与批量操作支持
v1.4.0 - 更完善的函数式 Result 处理与批量操作支持
这是对 Result 和 Results 工具类的一次重要功能增强版本,API 保持完全向后兼容。
✨ 新增功能
-
Result 类 显著增强函数式能力:
- 新增
peekError/recover/recoverWith支持更自然的错误恢复链式写法 - 新增
combine/fold/swap/contains/exists等常用操作 map/flatMap现在能更好地处理Business异常- 支持更多终结操作:
getOrElse/getOrElseGet/onFailGet/failNow变体
- 新增
-
Results 工具类 大幅扩充实用场景:
tryOf/tryRun:优雅包装可能抛异常的代码块sequence:快速失败模式(fail-fast),遇到第一个错误立即返回sequenceAll:全量收集模式,收集所有成功 + 所有错误(返回MultiBusiness)traverse:对列表元素逐个映射为 Result,fail-fast 风格when:条件执行 Result 操作race:多个 Result Supplier 并行尝试,返回第一个成功的retry:简单失败重试机制pipe:链式管道式执行(类似 compose)
-
错误处理更健壮:
- 支持
MultiBusiness用于批量错误收集 - 更完善的 null / 异常 / 边界情况处理
Business异常在链式操作中传播更自然
- 支持
🧪 测试覆盖
- 新增 / 完善 大量单元测试,覆盖:
- 正常路径、失败路径
- 边界情况(空列表、null 值、异常抛出、Error 不捕获等)
- 函数式操作的各种组合场景
sequence/sequenceAll/traverse的 fail-fast 与全收集行为
🔄 兼容性
- 完全向后兼容:所有 1.3.x 的用法不受影响
- 无 breaking change,无废弃方法
推荐升级方式
<dependency>
<groupId>com.chao.failfast</groupId>
<artifactId>result</artifactId>
<version>1.4.0</version>
</dependency>感谢所有贡献者与测试反馈!
欢迎继续提交 issue / PR,让这个小工具变得更好用~
升级建议:建议所有项目尽快升级到 1.4.0 以获得更强大的链式写法和批量处理能力。
Enjoy functional Result programming! 🚀