登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
2025 Gitee 年度开源项目评选投票进行中,快为你的心仪项目助力!
代码拉取完成,页面将自动刷新
开源项目
>
WEB应用开发
>
Web开发框架
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
415
Star
4.2K
Fork
752
GVP
OpenSolon
/
solon
代码
Issues
52
Pull Requests
0
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
发行版
最新版
v3.8.0
9907a8b
2025-12-24 00:10
对比
Solon v3.8.0
西东
* 插件 `solon-flow` 第六次预览 * 新增 `solon-flow-workflow` 插件(替代 FlowStatefulService) * 新增 `solon-java25` 仓库(提供 ScopedValue 适配) * 添加 `solon` ScopeLocal 接口(用于 ThreadLocal 到 ScopedValue 兼容) * 添加 `solon` Solon.start(Class, MultiMap) 方法 * 添加 `solon` ThreadsUtil:newVirtualThreadFactory 方法 * 添加 `solon` ContextHolder:currentWith 方法,替代 currentSet(标为弃用) * 添加 `solon` Controller:remoting 属性(可替代 @Remoting 注解) * 添加 `solon` 非依赖关系的 bean 异步初始化(`@Init(async=true)`) * 添加 `solon` Stringable 接口 * 添加 `solon` 'env.use' 配置支持(相对 'env',它与 'env.on' 协作时不会冲突) * 添加 `solon` 'server.session.cookieHttpOnly' 配置支持(默认为 true) * 添加 `solon` Context.cookieSet(...,httpOnly) 方法 * 添加 `solon-test` HttpTester protocol 参数支持(方便 https 或 http 切换测试) * 添加 `solon-serialization` JsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持 * 添加 `solon-config-yaml` 依赖 solon-config-snack4 避免单个引入时忘掉 * 添加 `solon-net-httputils` HttpSslSupplierAny(方便无限制的 ssl 使用,但不建议) * 添加 `solon-web-rx` RxEntity 类(方便对接 mcp-sdk) * 添加 `solon-server` 会话状态的 cookie httpOnly 配置(默认为 false) * 添加 `solon-server-tomcat` ssl 适配支持 * 添加 `solon-security-validation` ValidatorFailureHandlerI18n 支持验证注解的国际化处理 添加 `solon-expression` SnelParser 类,为 TemplateParser 和 EvaluateParser 提供出入口和占位符配置 * 添加 `solon-flow` FlowContext:lastNode() 方法(最后一个运行的节点) * 添加 `solon-flow` FlowContext:lastNodeId() 方法(最后一个运行的节点Id) * 添加 `solon-flow` Node.getMetaAs, Link.getMetaAs 方法 * 添加 `solon-flow` NodeSpec:linkRemove 方法(增强修改能力) * 添加 `solon-flow` Graph:create(id,title,consumer) 方法 * 添加 `solon-flow` Graph:copy(graph,consumer) 方法(方便复制后修改) * 添加 `solon-flow` GraphSpec:getNode(id) 方法 * 添加 `solon-flow` GraphSpec:addLoop(id) 方法替代 addLooping(后者标为弃用) * 添加 `solon-flow` FlowEngine:eval(Graph, ..) 系列方法 * 添加 `solon-ai` FunctionPrompt:handleAsync(用于 mcp-server 异步支持) * 添加 `solon-ai` FunctionResource:handleAsync(用于 mcp-server 异步支持) * 添加 `solon-ai` FunctionTool:handleAsync(用于 mcp-server 异步支持) * 添加 `solon-ai-core` ChatMessage:toNdjson,fromNdjson 方法(替代 ChatSession:toNdjson, loadNdjson),新方法机制上更自由 * 添加 `solon-ai-core` ToolSchemaUtil.jsonSchema Publisher 泛型支持 * 添加 `solon-ai-mcp` mcp-java-sdk v0.17 适配(支持 2025-06-18 版本协议) * 添加 `solon-ai-mcp` mcp-server 异步支持 * 添加 `solon-ai-mcp` mcp-server streamable_stateless 支持 * 添加 `solon-ai-mcp` Tool,Resource,Prompt 对 org.reactivestreams.Publisher<X> 异步返回支持 * 添加 `solon-ai-mcp` McpServerHost 服务宿主接口,用于隔离有状态与无状态服务 * 添加 `solon-ai-mcp` McpChannel.STREAMABLE_STATELESS (服务端)无状态会话 * 添加 `solon-ai-mcp` McpClientProvider:customize 方法(用于扩展 roots, sampling 等) * 添加 `solon-ai-mcp` mcpServer McpAsyncServerExchange 注入支持(用于扩展 roots, sampling 等) * 优化 `solon` api-version 版本匹配 * 优化 `solon` SnelUtil snel 表达式缺参数时异常提示(避免配错名字) * 优化 `solon` ParamWrap:getName 改用 ParamSpec.getAlias。加 '@Param(name=xxx)' 注解可生效 * 优化 `solon-cache` CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀 * 优化 `solon-net-httputils` SslContextBuilder * 优化 `solon-expression` EvaluateParser 支持定义占位符(可支持 `{xxx}` 表达式) * 优化 `solon-expression` TemplateParser 支持定义占位符(可支持 `{xxx}` 表达式) * 优化 `solon-expression` LRUCache 性能(提高缓存性能) * 优化 `solon-ai-dialect-openai` claude 兼容性 * 优化 `solon-ai-mcp mcp` StreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况* 优化 `solon-flow` eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务) * 优化 `solon-flow` FlowEngine:eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务) * 调整 `nami` NamiAttachment 切换为 ScopeLocal 接口实现 * 调整 `solon` ContextHolder 切换为 ScopeLocal 接口实现 * 调整 `solon` RunHolder:parallelExecutor 改为 newFixedThreadPool * 调整 `solon-data` TranExecutorDefault 切换为 ScopeLocal 接口实现 * 调整 `local-solon-cloud-plugin` 的 config 和 i18n 服务,如果没有 group 配置,则文件不带 group 前缀(之前默认给了 DEFAULT_GROUP 组名,显得复杂) * 调整 `rocketmq-solon-clouud-plugin` 的适配,事件属性不再加 '!' (并兼容旧格式) * 调整 `aliyun-ons-solon-clouud-plugin` 的适配,事件属性不再加 '!' (并兼容旧格式) * 调整 `rocketmq5-solon-clouud-plugin` 的适配,事件属性不再加 '!' (并兼容旧格式)。添加 sql92 过滤支持 * 调整 `solon-flow` 移除 Activity 节点预览属性 "$imode" 和 "$omode" * 调整 `solon-flow` Activity 节点流出改为自由模式(可以多线流出:无条件直接流出,有条件检测后流出) * 调整 `solon-flow` Node.getMeta 方法返回改为 Object 类型(并新增 getMetaAs) * 调整 `solon-flow` Evaluation:runTest 改为 runCondition * 调整 `solon-flow` FlowContext:incrAdd,incrGet 标为弃用(上下文数据为型只能由输入侧决定) * 调整 `solon-flow` Condition 更名为 ConditionDesc * 调整 `solon-flow` Task 更名为 ConditionDesc * 调整 `solon-flow` XxxDecl 命名风格改为 XxxSpec * 调整 `solon-flow` GraphDecl.parseByXxx 命名风格改为 GraphSpec.fromXxx * 调整 `solon-flow` Graph.parseByXxx 命名风格改为 Graph.fromXxx * 调整 `solon-ai-mcp` getResourceTemplates、getResources 不再共享注册 * 调整 `solon-ai-mcp` McpServerManager 内部接口更名为 McpPrimitivesRegistry (MCP 原语注册器) * 调整 `solon-ai-mcp` McpClientProvider 默认不启用心跳机制(随着 mcp-sdk 的成熟,server 都有心跳机制了) * 修复 `solon` IndexFiles 路径表达式的兼容问题(添加转换 `*->@`、`:->!`) * 修复 `solon` ParamWrap:getName 加 '@Param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响 * 修复 `solon-web-vertx` VxWebContext._requestBody 如果为 null 文件上传时会出错的问题 * 修复 `solon-docs-openapi2` 返回类型中泛型失效的问题(v3.7.0 出现) * snack4 升为 4.0.20 * jackson 升为 2.19.2 * liquor 升为 1.6.6 * asm 升为 9.9 #### solon 仓库补充说明 新特性: ```java public class Demo { static ScopeLocal<String> LOCAL = ScopeLocal.newInstance(); public void test(){ LOCAL.with("test", ()->{ System.out.println(LOCAL.get()); }); } } ``` #### solon-ai 仓库补充说明 新特性展示:1.MCP 无状态会话(STREAMABLE_STATELESS)和 2.CompletableFuture 异步MCP工具 ```java @McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/mcp1") public class McpServerTool { @ToolMapping(description = "查询天气预报", returnDirect = true) public CompletableFuture<String> getWeather(@Param(description = "城市位置") String location) { return CompletableFuture.completedFuture("晴,14度"); } } ``` 传输方式对应表:(服务端与客户端,须使用对应的传输方式才可通讯) | 服务端 | 客户端 | 备注 | |-----------------------|-------------|-----------------| | STDIO | STDIO | | | SSE | SSE | | | STREAMABLE | STREAMABLE | | | STREAMABLE_STATELESS | STREAMABLE | 对 server 集群很友好 | * STREAMABLE_STATELESS 集群,不需要 ip_hash,但“原语”变化后无法通知 client #### solon-flow 仓库补充说明 重要变化: * 取消“有状态”、“无状态”概念。 * solon-flow 回归通用流程引擎(分离“有状态”的概念)。 * 新增 solon-flow-workflow 为工作流性质的封装(未来可能会有 dataflow 等)。 兼容变化对照表: | 旧名称 | 新名称 | 说明 | |------------------------|-----------------------|-----------------------| | `GraphDecl` | `GraphSpec` | 图定义 | | `GraphDecl.parseByXxx` | `GraphSpec.fromXxx` | 图定义加载 | | `Graph.parseByXxx` | `Graph.fromXxx` | 图加载 | | `LinkDecl` | `LinkSpec` | 连接定义 | | `NodeDecl` | `NodeSpec` | 节点定义 | | `Condition` | `ConditionDesc` | 条件描述 | | `Task` | `TaskDesc` | 任务描述(避免与 workflow 的概念冲突) | | | | | | `FlowStatefulService` | `WorkflowService` | 工作流服务 | | `StatefulTask` | `Task` | 任务 | | `Operation` | `TaskAction` | 任动工作 | | `TaskType` | `TaskState` | 任务状态 | FlowStatefulService 到 WorkflowService 的接口变化对照表: | 旧名称 | 新名称 | 说明 | |------------------------------|-------------------------|--------| | `postOperation(..)` | `postTask(..)` | 提交任务 | | `postOperationIfWaiting(..)` | `postTaskIfWaiting(..)` | 提交任务 | | | | | | `evel(..)` | / | 执行 | | `stepForward(..)` | / | 单步前进 | | `stepBack(..)` | / | 单步后退 | | | | | | / | `getState(..)` | 获取状态 | 新特性预览:Graph 硬编码方式(及修改能力增强) ```java //硬编码 Graph graph = Graph.create("demo1", "示例", spec -> { spec.addStart("start").title("开始").linkAdd("01"); spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end"); spec.addEnd("end").title("结束"); }); //修改 Graph graphNew = Graph.copy(graph, spec -> { spec.getNode("n1").linkRemove("end").linkAdd("n2"); //移掉 n1 连接;改为 n2 连接 spec.addActivity("n2").linkAdd("end"); }); ``` 新特性预览:FlowContext:lastNodeId (计算的中断与恢复)。参考:https://solon.noear.org/article/1246 ```java flowEngine.eval(graph, context.lastNodeId(), context); //...(从上一个节点开始执行) flowEngine.eval(graph, context.lastNodeId(), context); ``` 新特性预览:WorkflowService(替代 FlowStatefulService) ```java WorkflowService workflow = WorkflowService.of(engine, WorkflowDriver.builder() .stateController(new ActorStateController()) .stateRepository(new InMemoryStateRepository()) .build()); //1. 取出任务 Task task = workflow.getTask(graph, context); //2. 提交任务 workflow.postTask(task.getNode(), TaskAction.FORWARD, context); ```
最后提交信息为:
README
v3.7.4
8f811e2
2025-12-24 00:09
对比
Solon v3.7.4
西东
* 优化 `solon` ParamWrap:getName 改用 ParamSpec.getAlias。加 '@Param(name=xxx)' 注解可生效 * 优化 `solon-cache` CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀 * 优化 `solon` SnelUtil snel 表达式缺参数时异常提示(避免配错名字) * 修复 `solon` IndexFiles 路径表达式的兼容问题(添加转换 `*->@`、`:->!`) * 修复 `solon` ParamWrap:getName 加 '@Param(name=xxx)' 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响 * 修复 `solon-web-vertx` VxWebContext._requestBody 如果为 null 文件上传时会出错的问题 * 修复 `solon-docs-openapi2` 返回类型中泛型失效的问题(v3.7.0 出现) * snack4 升为 4.0.20 * liquor 升为 1.6.6 * jackson 升为 2.19.2 * asm 升为 9.9
最后提交信息为:
3.7.4
v3.6.7
7579777
2025-12-24 00:07
对比
Solon v3.6.7
西东
* 优化 `solon-cache` CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀 * 优化 `solon` SnelUtil snel 表达式缺参数时异常提示(避免配错名字) * 修复 `solon-web-vertx` VxWebContext._requestBody 如果为 null 文件上传时会出错的问题 * snack4 升为 4.0.20 * liquor 升为 1.6.6 * jackson 升为 2.19.2 * asm 升为 9.9
最后提交信息为:
3.6.7
v3.5.10
7b52e79
2025-12-24 00:04
对比
Solon v3.5.10
西东
* 优化 `solon-cache` CacheService 适配没有 _cacheKeyHead 配置时,则不加前缀 * 修复 `solon-web-vertx` VxWebContext._requestBody 如果为 null 文件上传时会出错的问题 * liquor 升为 1.6.6 * jackson 升为 2.19.2 * asm 升为 9.9
最后提交信息为:
3.5.10
v3.7.3
1a541dd
2025-12-06 07:03
对比
Solon v3.7.3
西东
* 插件 `solon-flow` 第五次预览 * 新增 `solon-server-tomcat-add-jsp` 插件 * 新增 `solon-server-tomcat-add-websocket` 插件 * 新增 `solon-server-tomcat-add-jsp-jakarta` 插件 * 新增 `solon-server-tomcat-add-websocket-jakarta` 插件 * 新增 `solon-cloud-telemetry` 插件 * 新增 `opentelemetry-solon-cloud-plugin` 插件 * 添加 `solon` SolonProps:appVersion `solon.app.version` 配置支持 * 添加 `solon` 接口版本的模式匹配支持(`1.0+`) * 添加 `solon-scheduling` IJobManager:jobAdd(name,scheduled,handler,data) 方法 * 添加 `solon-server-tomcat` jsp 适配支持 * 添加 `solon-flow` Node:task 硬编码能力(直接设置 TaskComponent),方便全动态场景 * 添加 `solon-flow` Node:when 硬编码能力(直接设置 ConditionComponent),方便全动态场景 * 添加 `solon-flow` Link:when 硬编码能力(直接设置 ConditionComponent),方便全动态场景 * 添加 `solon-flow` StateResult ,在计算方面比 StatefulTask 更适合语义 * 添加 `solon-flow` FlowContext:stop(),interrupt() 方法 * 添加 `solon-flow` Graph 快捷创建方法 * 添加 `solon-flow` FlowStatefulService:eval 方法 * 添加 `solon-server-tomcat-jakarta` jsp 支持 * 优化 `solon-server` DebugUtils 支持 jetty,tomcat,undertow jsp 调试目录构建 * 优化 `solon-server-undertow` 请求大小控制 * 优化 `solon-server-jetty` jsp 适配 * 优化 `solon-ai-core` ToolSchemaUtil 扩展能力,支持注解处理定制(方便第三方集成) * 优化 `solon-ai-mcp` MCP 客户端与服务端异常链接状态 立即返回 * 调整 `solon-flow` “链”概念改为“图”(更符合实际结构) * 调整 `solon-flow` Chain 更名为 Graph,ChainDecl 更名为 GraphDecl * 调整 `solon-flow` ChainInterceptor,ChainInvocation 更名为 FlowInterceptor,FlowInvocation * 调整 `mybatis-solon-plugin` 当配置的 mapper 没有对应注册时改为 warn 日志打印(之前为异常) * 修复 `solon` RoutingDefault 多个双星通配符冲突的问题(v3.7.2 出现) * 修复 `solon-server-jetty-jakarta` jsp 支持 * 修复 `solon-configuration-processor` 失效的问题(v3.6.1 出现) * eggg 升为 1.0.10 * snack4 升为 4.0.17 * wood 升为 1.4.3 * luffy 升为 1.11.1 * folkmq 升为 1.7.13 * fastjson2 升为 2.0.60 * hutool 升为 5.8.41 * smarthttp 升为 2.5.17 * tomcat 升为 9.0.112 * vert.x 升为 4.5.22 * jetty.jakarta 升为 12.1.4 * undertow.jakarta 升为 2.3.20.Final * logback.jakarta 升为 1.5.21 solon-flow 兼容说明: ``` 现有应用如果没有用 ChainDecl 动态构建,不会受影响。。。如果有?需要换个类名。 ``` solon-flow 硬编码更简便: ```java Graph graph = Graph.create("demo1", decl -> { decl.addActivity("n1").task(new Draft()).linkAdd("n2"); decl.addActivity("n2").task(new Review()).linkAdd("n3"); decl.addActivity("n3").task(new Confirm()); }); ```
最后提交信息为:
3.7.3
v3.6.6
7a7d370
2025-12-05 21:59
对比
Solon v3.6.6
西东
* 优化 solon-ai-mcp MCP 客户端与服务端异常链接状态 立即返回 * 调整 mybatis-solon-plugin 当配置的 mapper 没有对应注册时改为 warn 日志打印(之前为异常) * 修复 solon-configuration-processor 失效的问题(v3.6.1 出现) * snack4 升为 4.0.17
最后提交信息为:
3.6.6
v3.7.2
0bc5969
2025-11-22 20:08
对比
Solon v3.7.2
西东
* 引入 jspecify 的 `@Nullable`,`@NonNull` 注解 * 新增 resilience4j-solon-cloud-plugin 插件 * 新增 solon-cloud-gateway websocket 协议代理支持 * 新增 solon 启动扫描类索引机制(由 solon aot 构建时自动生成) * 新增 aot 构建配置(在 native 基础上去除 graalvm.buildtools),任意 jdk 版本可用 * 添加 solon RunUtil.io(),timer() 方便响应式使用 * 添加 solon 启动资源索引机制(通过 aot 实现) * 添加 solon-rx Completable:doOnErrorResume 方法 * 添加 solon-rx Completable:subscribeOn, delay 方法,方便同步io对接 * 添加 solon-net WebSocket:colse(code,reason) 方法及相关适配 * 添加 solon-net-httputils HttpResponse:headerMap 方法 * 添加 solon-data solon.dataSources 的配置提示 * 添加 solon-web-staticfiles `solon.mime.mapping` 配置支持(将替代 solon.mime) * 优化 solon 路由匹配规则,原3个优先级升为5优先级(更细) * 优化 solon AppContext:beanScan 改为先加载再分批处理(确保配置类先处理) * 优化 solon AppContext:startInjectReview 去掉 stream 写法(减少中转,提升性能) * 优化 solon-logging 初始化处理,避免二次加载文件配置 * 优化 solon 启动性能(提升 10% 到 30%) * 优化 solon-serve-vertx websocket 适配,避免与 solon-cloud-gateway 的 ws 代理起冲突 * 调整 solon 编译配置荐 maven.compiler.source,target 改为 release * 调整 solon-serve-vertx 去除内部对象 VertxHolder(没地方用到了) * 调整 solon-serialization AbstractStringEntityConverter string 类型直接输出(不序列化) * 调整 solon ChainManager:getInterceptorNodes,addInterceptor,addInterceptorIfAbsent,removeInterceptor 恢复旧方法并标为弃用 * 修复 nami-coder-snack4 插件元数据配置失效问题(v3.7.0 出现的) * 修复 solon-rx Completable:doOnError 会中断传递的问题 * 修复 solon-server-vertx VxWebSocketImpl:remoteAddress 转换失败的问题 * 修复 solon-scheduling-simple 不能识别:`zone=+08` 配置问题 * eggg 升为 1.0.8 * snack4 升为 4.0.14
最后提交信息为:
引入 jspecify 的
@Nullable
,
@NonNull
注解
v3.6.5
d75367f
2025-11-22 17:13
对比
Solon v3.6.5
西东
* 添加 solon RunUtil.io(),timer() 方便响应式使用 * 修复 solon-rx Completable:doOnError 会中断传递的问题 * 修复 solon-server-vertx VxWebSocketImpl:remoteAddress 转换失败的问题 * 修复 solon-scheduling-simple 不能识别:`zone=+08` 配置问题 * snack4 升为 4.0.14
最后提交信息为:
3.6.5
v3.5.9
d528e68
2025-11-22 17:06
对比
Solon v3.5.9
西东
* 添加 solon RunUtil.io(),timer() 方便响应式使用 * 修复 solon-rx Completable:doOnError 会中断传递的问题 * 修复 solon-server-vertx VxWebSocketImpl:remoteAddress 转换失败的问题 * 修复 solon-scheduling-simple 不能识别:`zone=+08` 配置问题
最后提交信息为:
3.5.9
v3.7.1
399cfff
2025-11-08 11:22
对比
Solon v3.7.1
西东
* 添加 solon Router:add(clz) 方法 * 修复 solon AppContext:tryBuildBeanOfClass2 目标组件为接口时出现 getCreator null 异常(边界问题)
最后提交信息为:
3.7.1
v3.7.0
384450c
2025-11-07 12:31
对比
Solon v3.7.0
西东
* 升级 snack3 切换为 snack4 * 新增 solon-config-snack3 插件 * 新增 solon-config-snack4 插件 * 添加 solon preStop 方法名(替代 prestop),后者标为弃用。两者都可用 * 添加 solon Router:addPathPrefix(path, tester) 方法 * 添加 solon Context:localPort() 方法 * 添加 solon-server-smarthttp 有 tomcat 时的启动控制 * 优化 solon-web-staticfiles StaticResourceHandler 的 Cache-Control 处理(允许外部设定并优先) * 优化 solon-ai-core ToolSchemaUtil:paramOf 方法,增加泛型支持 * 优化 solon-ai-core ToolSchemaUtil:outputSchema 泛型处理 * 调整 solon-config-plus 标为弃用,由 solon-config-snack3 或 solon-config-snack4 替代 * 调整 solon-net WebSocket:remoteAddress, localAddress 移除 throws IOException * 调整 solon ActionLoader, ActionLoaderFactory 内部接口设计 * 调整 solon RouterWrapper 标为弃用,功能转到 Router 接口上 * 调整 solon ChainManager:addInterceptor (内部接口)更名为 addRouterInterceptor 强化语义 * 调整 solon 不再对 remoting 注册作 mapping 限制(改成跟控制器一样的策略) * 调整 solon Router:getBy 更名为 findBy (前者标为弃用),避免下 get 疑似冲突 * 调整 solon-server 允许不输出 content-type * 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常(添加 hasNestedJsonBlock 检测) * 修复 solon-ai-mcp 可能出现 Unknown media type 错误(取消 request.contentType 空设置) * 移除 solon.xxx 和 nami.xxx 风格的发布包 * 启用 eggg 作为类元信息构建机制 * redisx 升为 1.8.2(snack3 切换为 snack4) * snack4 升为 4.0.8 * wood 升为 1.4.2 * log4j 升为 2.25.2 * logback 升为 1.3.16 * micrometer 升为 1.15.5 * opentelemetry 升为 1.55.0 * undertow 升为 2.2.38.Final * socketd 升为 2.5.20 * smartsocket 升为 1.7.4 * smarthttp 升为 2.5.16 | 快捷组合包 | 调整情况 | |------------|----------------------------------------------------------------| | solon-lib | 使用 solon-config-snack4 替代 solon-config-snack3 | | solon-web | 使用 solon-serialization-snack4 替代 solon-serialization-snack3 |
最后提交信息为:
3.7.0
v3.6.4
75f0ba3
2025-11-07 12:31
对比
Solon v3.6.4
西东
* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常(添加 hasNestedJsonBlock 检测) * 优化 solon-server 不再默认输出 TEXT_PLAIN_UTF8_VALUE(允许空 content-type) * 优化 solon-handle Action 默认为 TEXT_PLAIN_UTF8_VALUE * smart-http 升为 2.5.14-r2 * snack4 升为 4.0.7
最后提交信息为:
3.6.4
v3.5.8
bdc4ef4
2025-11-07 12:30
对比
Solon v3.5.8
西东
* 修复 solon-ai parseToolCall 接收 stream 中间消息时可能会异常(添加 hasNestedJsonBlock 检测) * 优化 solon-server 不再默认输出 TEXT_PLAIN_UTF8_VALUE(允许空 content-type) * 优化 solon-handle Action 默认为 TEXT_PLAIN_UTF8_VALUE * smart-http 升为 2.5.14-r2
最后提交信息为:
3.5.8
v3.6.2
282f96d
2025-10-23 20:06
对比
Solon v3.6.2
西东
* 修复 solon 默认渲染器没有生效的问题 * 修复 solon-server-smarthttp 适配文件上传数据暴涨的问题(3.6.0 出现的) * smart-http 升为 2.5.14
最后提交信息为:
UPDATE
v3.6.1
883cc22
2025-10-23 10:03
对比
Solon v3.6.1
西东
* 新增 `nami-coder-snack4` 插件 * 新增 `solon-serialization-snack4` 插件 * 新增 `nami-coder-snack4` 插件 * 添加 `solon` MethodArgumentResolver 接口,替代 ActionArgumentResolver (标为弃用)。语义更合理 * 添加 `solon` Render:mappings 方法(支持自动映射效果) * 添加 `solon` `Bean:autoInject`(替代 injected),`Bean:autoProxy`,`Managed:autoProxy` 属性 * 优化 `solon` 渲染体系对返回 string 的处理 * 优化 `solon` Entity if string 的渲染输出 * 优化 `solon` Utils.appFolder 支持中文路径 * 优化 `solon` RenderManager 内部基于 _mapping 的单线管理管理 * 优化 `solon-config-yaml` 对 'solon.env.on' 的分片处理(避免转 yaml 时与 'solon.evn' 冲突) * 修复 `solon-rx` SimpleSubscriber 长流输出可能出错的问题 * liquor 升为 1.6.3
最后提交信息为:
liquor 升为 1.6.3
v3.5.6
e5ee8da
2025-10-23 10:02
对比
Solon v3.5.6
西东
* 修复 `solon-rx` SimpleSubscriber 长流输出可能出错的问题
最后提交信息为:
3.5.6
v3.4.7
285a9be
2025-10-23 10:00
对比
Solon v3.4.7
西东
* 修复 `solon-rx` SimpleSubscriber 长流输出可能出错的问题
最后提交信息为:
3.4.7
v3.6.0
e92dd6c
2025-10-07 17:04
对比
Solon v3.6.0
西东
* 新增 `solon-server-grizzly` 插件 * 新增 `solon-server-grizzly-add-websocket` 插件 * 新增 `solon-server-tomcat` 插件(基于 tomcat v9.0 适配) * 新增 `solon-server-tomcat-jakarta` 插件(基于 tomcat v11.0 适配) * 新增 `solon-server-undertow-jakarta` 插件(基于 undertow v2.3 适配) * 完善 `solon-server-jetty-jakarta` 插件(基于 jetty v12 适配) * 完善 `solon-server-jetty-add-jsp-jakarta` 插件(基于 jetty v12 适配) * 完善 `solon-server-jetty-add-websocket-jakarta` 插件(基于 jetty v12 适配) * 调整 `solon-serialization-*` 弱化 ActionExecuteHandler, Render 的定制,改为 XxxxSerializer 对外定制 * 调整 `solon` LogIncubator 接口迁移到内核,由内核控制加载时机(权重提高) * 调整 `solon` EntityConverter 接口(替代 Render 和 ActionExecuteHandler 接口),旧接口仍可用 * 调整 `solon` SolonProps:argx 改为 MultiMap 类型(支持多值),NvMap 标为弃用 * 引入 `slf4j-api` 替代 `solon` 内的 LogUtil(减少中转代码) * 引入 `solon-expression` 替代 `solon` 内的模板表达式工具(仍可使用) * 添加 `solon` Condition:onExpression(采用 SnEL 表达式)用于替代 onProperty(标为弃用) * 添加 `solon` SnelUtil(基于 SnEL 且兼容旧的 TmplUtil) 替代 TmplUtil(标为弃用)//如果有 # 则为新表达式 * 添加 `solon-mvc` `List<UploadedFile>` 注入支持(用 `UploadedFile[]` 性能更好) * 添加 `solon-server` 所有 http-server 适配 `server.request.fileSizeThreshold` 配置支持(重要升级) * 添加 `solon` converters,serializers,renders,factories,chains(简化名自:converterManager,serializerManager,renderManager,factoryManager,chainManager) * snakeyaml 升为 2.5 * lombok 升为 1.18.42 * jansi 升为 2.4.2 * guava 升为 33.4.8-jre * log4j 升为 2.25.1 * fury 升为 0.10.3 * smart-http 升为 2.5.13 * reactor-core 升为 3.7.4 * graalvm.buildtools 升为 0.11.0 示例: ```java @Managed public class SerializerDemo { //ps: 这前需要使用 Fastjson2RenderFactory, Fastjson2ActionExecutor 两个对象,且表意不清晰 //(仍可使用) @Managed public void config(Fastjson2StringSerializer serializer) { //序列化(输出用) serializer.addEncoder(Date.class, s -> s.getTime()); serializer.addEncoder(Date.class, (out, obj, o1, type, i) -> { out.writeInt64(((Date) obj).getTime()); }); serializer.getSerializeConfig().addFeatures(JSONWriter.Feature.WriteMapNullValue); //添加特性 serializer.getSerializeConfig().removeFeatures(JSONWriter.Feature.BrowserCompatible); //移除特性 serializer.getSerializeConfig().setFeatures(JSONWriter.Feature.BrowserCompatible); //重设特性 //反序列化(收接用) serializer.getDeserializeConfig().addFeatures(JSONReader.Feature.Base64StringAsByteArray); } } @Managed public class ConditionDemo(){ //ps: 之前是用 onProperty(功能有限,不够体系化) //(仍可使用) @Condition(onExpression = "${demo.level:1} == '1'") //SnEL 求值表达式 @Managed public void ifDemoLevel1ThenRun(){ System.out.println("hi!"); } } @Managed public class SnelDemo { //ps: 之前基于 TmplUtil 实现(功能有限,不够体系化) //(仍可使用) //旧模板符号:`${}` @Cache(key = "oath_#{code}", seconds = 10) //SnEL 模板表达式(通过 SnelUtil 实现兼容)//新模板符号:`#{}` public Oauth queryInfoByCode(String code) { return new Oauth(code, LocalDateTime.now()); } @CachePut(keys = "oath_#{result.code}") //(result 为返回结果) public Oauth updateInfo(Oauth oauth) { return oauth; } @CacheRemove(keys = "oath_#{oauth.code}") public void removeInfo(Oauth oauth) { } } ```
最后提交信息为:
README
v3.5.5
5a59e22
2025-09-30 22:22
对比
Solon v3.5.5
西东
* 添加 solon-net-httputils HttpUtilsBuilder:factory 方法(配合 solon-ai 优化) * 修复 solon-scheduling @Async 执行器名字配置失效的问题 * 修复 solon-net-httputils HttpUtils:toQueryString map 里有 null item 时会异常的问题
最后提交信息为:
3.5.5
v3.5.4
b49eab3
2025-09-24 15:41
对比
Solon v3.5.4
西东
* 优化 `solon-test` `@SolonTest` 支持非 solon 的 main 程序单测启动 * 修复 `solon-web-rx` 会发射中断的问题(v3.5.3, v3.4.5 引起的)
最后提交信息为:
3.5.4
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
Java
1
https://gitee.com/opensolon/solon.git
git@gitee.com:opensolon/solon.git
opensolon
solon
solon
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册