{"release":{"tag":{"name":"v3.7.2","path":"/opensolon/solon/tags/v3.7.2","tree_path":"/opensolon/solon/tree/v3.7.2","message":"","commit":{"id":"0bc59696324fd870c9866e0cb671c3dbd26b1e95","short_id":"0bc5969","title":"引入 jspecify 的 `@Nullable`,`@NonNull` 注解","title_markdown":"引入 jspecify 的 \u003Ccode\u003E@Nullable\u003C/code\u003E,\u003Ccode\u003E@NonNull\u003C/code\u003E 注解","description":"","description_markdown":"","message":"引入 jspecify 的 `@Nullable`,`@NonNull` 注解\n","message_markdown":"引入 jspecify 的 \u003Ccode\u003E@Nullable\u003C/code\u003E,\u003Ccode\u003E@NonNull\u003C/code\u003E 注解","detail_path":"/opensolon/solon/commit/0bc59696324fd870c9866e0cb671c3dbd26b1e95","commits_path":"/opensolon/solon/commits/0bc59696324fd870c9866e0cb671c3dbd26b1e95","tree_path":"/opensolon/solon/tree/0bc59696324fd870c9866e0cb671c3dbd26b1e95","author":{"name":"西东","email":"noear@live.cn","username":"noear_admin","user_path":"/noear_admin","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1683858335519306352/15535_noear_admin_1683858335.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"committer":{"name":"西东","email":"noear@live.cn","username":"noear_admin","user_path":"/noear_admin","enterprise_user_path":null,"image_path":"https://foruda.gitee.com/avatar/1683858335519306352/15535_noear_admin_1683858335.png!avatar30","is_gitee_user":true,"is_enterprise_user":null,"widget_url":""},"authored_date":"2025-11-21T23:06:04+08:00","committed_date":"2025-11-21T23:06:04+08:00","signature":null,"build_state":null},"archive_path":"/opensolon/solon/repository/archive/v3.7.2","signature":null},"operating":{"edit":false,"download":true,"destroy":false,"enterprise_forbid_zip":false},"release":{"title":"Solon v3.7.2","path":"/opensolon/solon/releases/tag/v3.7.2","tag_path":"/opensolon/solon/tree/v3.7.2","project_id":5715659,"created_at":"2025-11-22T20:08:26+08:00","is_prerelease":false,"description":"\r\n* 引入 jspecify 的 `@Nullable`,`@NonNull` 注解\r\n* 新增 resilience4j-solon-cloud-plugin 插件\r\n* 新增 solon-cloud-gateway websocket 协议代理支持\r\n* 新增 solon 启动扫描类索引机制（由 solon aot 构建时自动生成）\r\n* 新增 aot 构建配置（在 native 基础上去除 graalvm.buildtools），任意 jdk 版本可用\r\n* 添加 solon RunUtil.io(),timer() 方便响应式使用\r\n* 添加 solon 启动资源索引机制（通过 aot 实现）\r\n* 添加 solon-rx Completable:doOnErrorResume 方法\r\n* 添加 solon-rx Completable:subscribeOn, delay 方法，方便同步io对接\r\n* 添加 solon-net WebSocket:colse(code,reason) 方法及相关适配\r\n* 添加 solon-net-httputils HttpResponse:headerMap 方法\r\n* 添加 solon-data solon.dataSources 的配置提示\r\n* 添加 solon-web-staticfiles `solon.mime.mapping` 配置支持（将替代 solon.mime）\r\n* 优化 solon 路由匹配规则，原3个优先级升为5优先级（更细）\r\n* 优化 solon AppContext:beanScan 改为先加载再分批处理（确保配置类先处理）\r\n* 优化 solon AppContext:startInjectReview 去掉 stream 写法（减少中转，提升性能）\r\n* 优化 solon-logging 初始化处理，避免二次加载文件配置\r\n* 优化 solon 启动性能（提升 10% 到 30%）\r\n* 优化 solon-serve-vertx websocket 适配，避免与 solon-cloud-gateway 的 ws 代理起冲突\r\n* 调整 solon 编译配置荐 maven.compiler.source,target 改为 release\r\n* 调整 solon-serve-vertx 去除内部对象 VertxHolder（没地方用到了）\r\n* 调整 solon-serialization  AbstractStringEntityConverter string 类型直接输出（不序列化）\r\n* 调整 solon ChainManager:getInterceptorNodes，addInterceptor，addInterceptorIfAbsent，removeInterceptor 恢复旧方法并标为弃用\r\n* 修复 nami-coder-snack4 插件元数据配置失效问题（v3.7.0 出现的）\r\n* 修复 solon-rx Completable:doOnError 会中断传递的问题\r\n* 修复 solon-server-vertx VxWebSocketImpl:remoteAddress 转换失败的问题\r\n* 修复 solon-scheduling-simple 不能识别：`zone=+08` 配置问题\r\n* eggg 升为 1.0.8\r\n* snack4 升为 4.0.14","author":{"name":"西东","username":"noear_admin","path":"/noear_admin","avatar_url":"https://foruda.gitee.com/avatar/1683858335519306352/15535_noear_admin_1683858335.png!avatar30"},"attach_files":[],"zip_download_url":"/opensolon/solon/releases/tag/v3.7.2.zip","tar_download_url":"/opensolon/solon/releases/tag/v3.7.2.tar.gz"}}}