跳转到内容

版本历史

这篇文档是升级前的必读材料。在升级版本之前,先查看对应版本的兼容性说明和升级指南。

版本号遵循语义化版本规范:主版本.次版本.修订号

  • 主版本:可能包含破坏性变更
  • 次版本:新增功能,向后兼容
  • 修订号:问题修复,向后兼容

这是 Feat 项目的一个重要里程碑。我们将开源协议从 AGPL 升级至 Apache 2.0

为什么切换协议?

在项目初期,我们选择 AGPL 旨在保护开源项目的完整性。但随着项目成熟,AGPL 的”传染性”条款对企业用户构成了法律风险,成为阻碍广泛采用的主要因素。

Apache 2.0 已成为企业级开源项目的事实标准(Spring Framework、Kubernetes、TensorFlow 等均采用)。它在保护创作者权益与促进生态繁荣之间取得了良好平衡。

对企业用户的价值

方面变化
商业使用可自由用于商业闭源项目,无需开源义务
专利授权明确的专利使用权,降低知识产权风险
技术选型降低法务审批门槛,加速决策流程
生态参与可自由定制和扩展,促进第三方库发展

v2.0.0 与 v1.x 完全兼容,只需更新版本号:

<feat.version>2.0.0</feat.version>

无需修改任何代码,升级后自动适用 Apache 2.0 协议。


  • Client:重构 GZIP 输入流,支持完整头部解析和异步解码
  • Client:修复 SSE 事件数据换行符转义问题
  • Server:修复静态资源处理器路径解析、HEAD 请求、空指针等问题
  • Server:支持配置静态资源路径
  • Router:支持花括号 {} 形式的路径参数匹配
  • Core:升级 smart-socket 至 1.8.3
  • Agent:实现 ReAct Agent 智能体,支持系统提示词、工具执行钩子
  • Agent:AI 代理工具改为异步执行模式
  • 模型:新增 Kimi-K2.5-Instruct 支持
  • 工具:新增 WebReader 网页阅读器功能
  • 数据库:新增 MyBatis 集成支持
  • 会话:新增分布式会话管理,集成 Redis
  • 部署:新增 Docker 部署支持(JRE 和 Native Image)
  • 打包:新增 Fat Jar 打包支持
  • 路由:RequestMapping 支持 {} 花括号路径参数
  1. 更新版本号

    <feat.version>1.5.0</feat.version>
  2. 处理编译报错

    升级后若出现编译错误,根据错误提示调整代码。

  3. 检查 AsyncResponse 使用

    AsyncResponse.complete() 方法返回类型从 void 变更为 AsyncResponse

    v1.5+
    // v1.4 及之前
    asyncResponse.complete();
    return asyncResponse.complete();
变更项影响处理方式
AsyncResponse.complete() 返回类型有返回值按需要接收返回值
ApplicationContext 设为 final无法继承使用组合而非继承
Feat AI Agent 接口重构多处变更参考新文档调整

  • Client:新增友好的 SSE 接口,更好的赋能 AI 开发
  • Client:HttpClient 支持链路复用和连接资源自动释放
  • Client:支持解析 Content-Encoding: dcz 响应
  • Server:Cookie Name 默认采用 RFC2109 规范
  • Server:支持非 UTF-8 字符集的请求
  • Core:升级 smart-socket 至 1.7.5
  • SSE:适配全新 SSE 接口,提升代码可读性
  • Agent:初步实现通用 Agent 能力,内置多款工具
  • 模型:新增 DeepSeek-V3.2-Exp、DeepSeek-V3_1、Qwen3-8B、Qwen3-32B
  • 性能:异步接收 Form 表单数据,并发性能大幅提升
  • HTTPS:新增 feat.yaml 配置项 $.server.autoSSL 自动启用 HTTPS
  • AOT:优化 AOT VM 模块,对齐 AOT 运行表现
  1. 更新版本号至 1.4.0
  2. 处理编译报错(主要是包路径迁移)
  3. 若使用 Feat AI Agent,注意接口存在不兼容重构
  • feat-core 模块中多个工具类进行包路径迁移
  • feat-ai 模块 Agent 相关接口存在多处重构,未来一段时期内该情况持续存在

  • 静态资源服务迁移至示例模块
  • FeatUtils 增加 isEmptyisNotEmpty 方法
  • 优化 Router 路径参数解析性能
  • 更加规范、统一的接口定义
  • 引入编译期 LICENSE 授权验证机制
  • 剥离 AOT 相关代码作为独立模块
  • 新增 AOT VM 模块,提升本地开发体验
  • Feat AI 模板存在多处接口定义及配置参数重构
  • AOT 相关代码剥离成独立模块,保留原包路径定义,基本保持兼容性

  • 优化 HttpClient 实现,修复已知 bug
  • 启用 SSE 时默认禁用 chunked 响应 header
  • 扩充 ByteTree 初始化缓存值,提升服务性能
  • 版本号定义从 ServerOptions.java 迁移至 Feat.java
  • 新增 MCP 规范实现
  • 新增 @HttpClient 注解,用于发起 HTTP 请求
  • 支持响应结果为 bool 值的 HTTP 接口
  • @Controller 增加 gzip、gzipThreshold 配置项
  • 新增基于注解的 MCP Server 开发能力

  • Router:支持定义相同 URL、不同 HTTP Method 的接口
  • 日志:RunLogger 自动感应日志级别变化,支持动态调整
  • 日志:日志级别环境变量由 smarthttp.log.level 调整为 feat.log.level
  • 工具类:将 DateUtils、GzipUtils、HttpUtils 等统一汇集至 FeatUtils
  • Banner:限制单进程内 Feat Banner 最多输出一次
  • 配置:新增 feat.yaml/feat.yml 配置文件解析,支持 @Value 注入
  • 日志:支持运行时动态调整指定 loggerName 的日志级别
  • 性能:编译器自动将非通配 URI 注册至 ByteTree,提升解析性能

POM 升级

<dependency>
<groupId>tech.smartboot.feat</groupId>
<artifactId>feat-core</artifactId>
<version>1.1.0</version>
</dependency>

代码调整

  • CloudOptions.addExternalBean() 重命名为 registerBean()
  • 废弃工具类:DateUtils、GzipUtils、HttpUtils、NumberUtils、StringUtils、CollectionUtils、Constant、SHA1、WebSocketUtil

Feat 首个正式发布版本,提供完整的企业级 Web 服务开发框架功能。

  • 性能:基于智能异步通信框架,轻松应对高并发场景
  • 协议:支持 HTTP/1.0、HTTP/1.1、HTTP/2、WebSocket、SSE
  • 功能:内置静态资源服务器、灵活路由、RESTful API 支持
  • 部署:快速启动(<1秒),适合容器化和 Serverless 场景
  • 企业级:Feat Cloud 提供类似 Spring Boot 的开发体验
  • AI:Feat AI 模块支持 AI 应用开发

  • 问题反馈Gitee Issues
  • 版本咨询:查看对应版本的微信公众号发布文章
  • 升级支持:在 Issue 中描述你的升级场景,获取针对性建议