Skip to content

Releases: KyrieChao/Failure

Release v1.9.0 - 异步验证引擎 & Spring AOT 原生镜像支持

30 Mar 06:55

Choose a tag to compare

🚀 新特性

异步验证引擎

  • 新增 failAsync() - 异步单规则快速失败
  • 新增 failAllAsync() - 异步全规则收集
  • 新增 verifyAsync() - 异步验证执行
  • 完整的异步单元测试覆盖与边界条件处理

Spring AOT 原生镜像支持

  • 添加运行时提示配置 (RuntimeHints)
  • 完整支持 GraalVM Native Image 编译

性能优化

  • 新增栈跟踪修剪功能,减少异常创建开销
  • 对象图遍历逻辑重构至独立 ObjectGraphWalker

开发者体验

  • 添加控制台调试输出,链式调用状态一目了然
  • 核心类结构优化(Business 移至 exception 包并开放构造)

🔧 内部重构

  • Chain 类迁移至 internal.core 包,模块边界更清晰
  • 递归验证逻辑解耦,维护性提升

Release v1.8.1 - Scope API 优化与追踪ID默认禁用

26 Mar 08:35

Choose a tag to compare

✨ 优化

追踪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 生态桥接

25 Mar 11:17

Choose a tag to compare

🚀 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 格式与类型继承验证

16 Mar 09:21

Choose a tag to compare

🔥 重构异常体系,支持 Code:Message 格式

核心增强

  • ✨ 支持 CODE:Message 结构化消息(如 USER_001:用户名不能为空),自动解析为 ParsedValidationMessage
  • 🚀 类型继承处理器选择 + 缓存机制,性能提升 30%+
  • 🎯 精确空值检查:notNull() / notEmpty() / notBlank() 分层处理
  • 🌍 Result 构造函数内置国际化支持
  • ♻️ ValidationContext 可重置复用

Release v1.7.1 - 性能基准测试发布 | 品牌统一为 Failure

15 Mar 09:47

Choose a tag to compare

🔥 重要更新

品牌统一
项目名称从 "Fail-Fast" 全面统一为 "Failure",包括文档、注释及 Maven 坐标标识。

性能测试体系
新增完整性能基准测试套件,提供可复现的延迟测试数据及自动化报告生成。

✨ 新特性

  • 新增性能测试报告 PERFORMANCE_TEST.md
  • 提供自动化测试脚本(run_benchmarks.py / analyze.py
  • README 新增性能数据索引

🐛 问题修复

  • 修复 TypedValidator 在上下文为 null 时的空指针异常
  • 修复 Maven 编译插件 includes 配置导致的构建问题

Release v1.7.0 - refactor(core): 重构错误处理机制,引入策略化配置与懒加载支持

13 Mar 07:49

Choose a tag to compare

🚀 新功能

1. 策略化错误处理(ErrorPolicy)

  • 新增 ErrorPolicy 接口,支持自定义错误处理策略
  • 可插拔配置:全局默认策略 or 单次覆盖

2. 参数对象收敛(CheckSpec)

  • 新增 CheckSpec 类统一处理 code/detail/invalidValue
  • 消除重载爆炸,降低维护成本

3. 懒加载支持

  • check() 方法支持 Supplier 形式条件判断
  • 延迟 invalidValue 快照,提升性能(高频验证场景)

🔧 内部优化

  • 重构 ArrayTermCollectionTerm 等验证方法内部调用逻辑
  • 移除冗余测试文件,整合至 ChainBranchCoverageTest
  • 完善 ErrorPolicy 自定义配置文档

Release v1.6.0 - 添加国际化支持与调试快照功能

07 Mar 15:30

Choose a tag to compare

🚀 新功能

国际化支持 (I18n)

  • 集成多语言错误信息显示
  • 支持中英文切换,自动根据请求头 Accept-Language 识别
  • 可配置默认语言和可用语言列表

调试快照

  • 记录导致异常的参数值,便于问题定位
  • 添加敏感数据脱敏功能(手机号、邮箱、身份证等)
  • 支持配置是否开启调试模式

新增校验规则

  • JSON 格式校验
  • Base64 编码校验
  • 信用卡号格式校验

🔧 改进

  • 重构异常处理流程,统一国际化消息解析
  • 优化配置属性结构,新增 failure.debug 相关配置
  • 调整自动配置,按需导入国际化组件
  • 优化错误信息格式化输出

🛠️ 工程

  • 添加 GitHub issue 模板
  • 更新 .gitignore 配置
  • 移除未使用的注解配置文件

⚠️ 破坏性变更

无,向下兼容

Release v1.5.1 - 简化校验 API 并添加流控制

05 Mar 09:25

Choose a tag to compare

🚀 改进

API 简化

  • 移除 Consumer<Business.Fabricator> 重载形式,统一使用 ResponseCode 参数
  • 简化校验方法签名,降低使用复杂度
  • 方法重载形式从四种减少到三种,更清晰易用

流控制功能

  • 新增 stopOnFail() - 遇到错误立即停止后续校验,防止 NPE
  • 新增 resume() - 恢复继续校验模式

内部重构

  • 重构 failNow 方法,移除不必要的回调形式
  • 简化内部 check 方法实现,优化错误处理流程

⚠️ 破坏性变更

Consumer<Business.Fabricator> 参数形式已移除,请迁移至 ResponseCode 参数形式。

迁移示例

// 旧写法(已移除)
.notNull(obj, f -&gt; f.code(400).message("错误"))

Release v1.5.0 - 流程控制与延迟校验增强

02 Mar 12:12

Choose a tag to compare

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 处理与批量操作支持

01 Mar 23:27

Choose a tag to compare

v1.4.0 - 更完善的函数式 Result 处理与批量操作支持

这是对 ResultResults 工具类的一次重要功能增强版本,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! 🚀