news 2026/4/16 10:57:03

超越 SpringBoot 4.0了吗?OpenSolon v3.8 发布!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
超越 SpringBoot 4.0了吗?OpenSolon v3.8 发布!

导引

(听说隔壁的 Spring 7 和 SpringBoot 4 最近出了几个大 Bug了?!)历时 8 年磨砺,1.7 万次代码提交,9个分仓库,几百个模块,20多万代码量, 1200 万次半年下载量 —— OpenSolon(即 Solon)正在重新定义 Java 企业级应用开发的性价比。

今日,我们正式发布 OpenSolon v3.8 及其 LTS 维护版本。是一次架构级的跨越:从 AI 领域的 MCP 无状态集群支持,到 Flow 流程引擎的回归通用化,再到对 Java 新版本(v25)的超前布局,OpenSolon 持续践行“快速、小巧、简洁”的克制美学。

无论你是追求算力性价比的极致主义者,还是正在寻找安全可靠的国产基座,这次更新都值得你关注。

  • 【超前适配】 率先适配 Java 25,新增 ScopedValue 适配支持
  • 【AI 增强】 solon-ai 深度支持 MCP 无状态会话集群与异步工具
  • 【架构重构】 solon-flow 回归通用流程引擎,推出全新的 WorkflowService 封装;
  • 【性能优化】 全面优化表达式引擎(SnEL)与缓存性能,持续保持高并发、省内存的领先优势。

OpenSolon 开源框架!(也称:Solon)

OpenSolon 是新一代,Java 企业级应用开发框架。从零开始构建(No Java-EE),有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议,是“杭州无耳科技有限公司”开源的根级项目,是 Java 应用开发的生态基座(可替换美国博通公司的 Spring 生态)。

  • 追求: 快速、小巧、简洁
  • 提倡: 克制、高效、开放

7年开源时间,累计代码提交1.6万次 ,近半年下载量1200万次。

  • 有透明可预期的《版本发布与长期支持计划(LTS)》
  • 有“【社区交流】”和“【企业服务】”双重技术支持

同时支持运行时环境(不基于 java-ee 构建,所以可以同时兼容):

  • java8, java11, java17, java21, java25

目前有几个主要的项目仓库:

代码仓库描述
/opensolon/solonSolon ,主代码仓库
/opensolon/solon-examplesSolon ,官网配套示例代码仓库
/opensolon/solon-expressionSolon Expression ,代码仓库
/opensolon/solon-flowSolon Flow ,代码仓库
/opensolon/solon-aiSolon Ai ,代码仓库
/opensolon/solon-cloudSolon Cloud ,代码仓库
/opensolon/solon-adminSolon Admin ,代码仓库
/opensolon/solon-integrationSolon Integration ,代码仓库
/opensolon/solon-java17Solon Java17 适配仓库(base java17)
/opensolon/solon-java25Solon Java25 适配仓库(base java25)
/opensolon/solon-gradle-pluginSolon Gradle ,插件代码仓库
/opensolon/solon-idea-pluginSolon Idea ,插件代码仓库
/opensolon/solon-vscode-pluginSolon VsCode ,插件代码仓库

有什么特点(相对 Java Spring 方案)?

OpenSolon 对国产算力非常友好,对 cpu 和 memory 的需求远低于同类方案。

特点描述
更高的计算性价比并发高 700%;内存省 50%
更快的开发效率代码少;入门简单;启动(或调试重启)快 10倍
更好的生产与部署体验打包小 90%
更大的兼容范围非 java-ee 架构;同时支持 java8 ~ java25,graalvm native image

最新的 techempower (第三方知名测试平台)测试数据:

  • https://www.techempower.com/benchmarks/#hw=ph&test=json§ion=data-r23
  • https://www.techempower.com/benchmarks/#hw=ph&test=plaintext§ion=data-r23

项目架构示意图(全场景应用开发支持)

v3.8.0 更新说明

  • 插件solon-flow第六次预览
  • 新增solon-flow-workflow插件(替代 FlowStatefulService)
  • 新增solon-java25仓库(提供 ScopedValue 适配)
  • 添加solonScopeLocal 接口(用于 ThreadLocal 到 ScopedValue 兼容)
  • 添加solonSolon.start(Class, MultiMap) 方法
  • 添加solonThreadsUtil:newVirtualThreadFactory 方法
  • 添加solonContextHolder:currentWith 方法,替代 currentSet(标为弃用)
  • 添加solonController:remoting 属性(可替代 @Remoting 注解)
  • 添加solon非依赖关系的 bean 异步初始化(@Init(async=true)
  • 添加solonStringable 接口
  • 添加solon‘env.use’ 配置支持(相对 ‘env’,它与 ‘env.on’ 协作时不会冲突)
  • 添加solon‘server.session.cookieHttpOnly’ 配置支持(默认为 true)
  • 添加solonContext.cookieSet(…,httpOnly) 方法
  • 添加solon-testHttpTester protocol 参数支持(方便 https 或 http 切换测试)
  • 添加solon-serializationJsonPropsUtil2.dateAsFormat 添加 java.sql.Timestamp 类型支持
  • 添加solon-config-yaml依赖 solon-config-snack4 避免单个引入时忘掉
  • 添加solon-net-httputilsHttpSslSupplierAny(方便无限制的 ssl 使用,但不建议)
  • 添加solon-web-rxRxEntity 类(方便对接 mcp-sdk)
  • 添加solon-server会话状态的 cookie httpOnly 配置(默认为 false)
  • 添加solon-server-tomcatssl 适配支持
  • 添加solon-security-validationValidatorFailureHandlerI18n 支持验证注解的国际化处理
    添加solon-expressionSnelParser 类,为 TemplateParser 和 EvaluateParser 提供出入口和占位符配置
  • 添加solon-flowFlowContext:lastNode() 方法(最后一个运行的节点)
  • 添加solon-flowFlowContext:lastNodeId() 方法(最后一个运行的节点Id)
  • 添加solon-flowNode.getMetaAs, Link.getMetaAs 方法
  • 添加solon-flowNodeSpec:linkRemove 方法(增强修改能力)
  • 添加solon-flowGraph:create(id,title,consumer) 方法
  • 添加solon-flowGraph:copy(graph,consumer) 方法(方便复制后修改)
  • 添加solon-flowGraphSpec:getNode(id) 方法
  • 添加solon-flowGraphSpec:addLoop(id) 方法替代 addLooping(后者标为弃用)
  • 添加solon-flowFlowEngine:eval(Graph, …) 系列方法
  • 添加solon-aiFunctionPrompt:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-aiFunctionResource:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-aiFunctionTool:handleAsync(用于 mcp-server 异步支持)
  • 添加solon-ai-coreChatMessage:toNdjson,fromNdjson 方法(替代 ChatSession:toNdjson, loadNdjson),新方法机制上更自由
  • 添加solon-ai-coreToolSchemaUtil.jsonSchema Publisher 泛型支持
  • 添加solon-ai-mcpmcp-java-sdk v0.17 适配(支持 2025-06-18 版本协议)
  • 添加solon-ai-mcpmcp-server 异步支持
  • 添加solon-ai-mcpmcp-server streamable_stateless 支持
  • 添加solon-ai-mcpTool,Resource,Prompt 对 org.reactivestreams.Publisher 异步返回支持
  • 添加solon-ai-mcpMcpServerHost 服务宿主接口,用于隔离有状态与无状态服务
  • 添加solon-ai-mcpMcpChannel.STREAMABLE_STATELESS (服务端)无状态会话
  • 添加solon-ai-mcpMcpClientProvider:customize 方法(用于扩展 roots, sampling 等)
  • 添加solon-ai-mcpmcpServer McpAsyncServerExchange 注入支持(用于扩展 roots, sampling 等)
  • 优化solonapi-version 版本匹配
  • 优化solonSnelUtil snel 表达式缺参数时异常提示(避免配错名字)
  • 优化solonParamWrap:getName 改用 ParamSpec.getAlias。加 ‘@Param(name=xxx)’ 注解可生效
  • 优化solon-cacheCacheService 适配没有 _cacheKeyHead 配置时,则不加前缀
  • 优化solon-net-httputilsSslContextBuilder
  • 优化solon-expressionEvaluateParser 支持定义占位符(可支持{xxx}表达式)
  • 优化solon-expressionTemplateParser 支持定义占位符(可支持{xxx}表达式)
  • 优化solon-expressionLRUCache 性能(提高缓存性能)
  • 优化solon-ai-dialect-openaiclaude 兼容性
  • 优化solon-ai-mcp mcpStreamableHttp 模式下 服务端正常返回时 客户端异常日志打印的情况* 优化solon-floweval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 优化solon-flowFlowEngine:eval(Node startNode) 处理,改为从 root 开始恢复到 start 再开始执行(恢复过程中,不会执行任务)
  • 调整namiNamiAttachment 切换为 ScopeLocal 接口实现
  • 调整solonContextHolder 切换为 ScopeLocal 接口实现
  • 调整solonRunHolder:parallelExecutor 改为 newFixedThreadPool
  • 调整solon-dataTranExecutorDefault 切换为 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 节点预览属性 “i m o d e " 和 " imode" 和 "imode""omode”
  • 调整solon-flowActivity 节点流出改为自由模式(可以多线流出:无条件直接流出,有条件检测后流出)
  • 调整solon-flowNode.getMeta 方法返回改为 Object 类型(并新增 getMetaAs)
  • 调整solon-flowEvaluation:runTest 改为 runCondition
  • 调整solon-flowFlowContext:incrAdd,incrGet 标为弃用(上下文数据为型只能由输入侧决定)
  • 调整solon-flowCondition 更名为 ConditionDesc
  • 调整solon-flowTask 更名为 ConditionDesc
  • 调整solon-flowXxxDecl 命名风格改为 XxxSpec
  • 调整solon-flowGraphDecl.parseByXxx 命名风格改为 GraphSpec.fromXxx
  • 调整solon-flowGraph.parseByXxx 命名风格改为 Graph.fromXxx
  • 调整solon-ai-mcpgetResourceTemplates、getResources 不再共享注册
  • 调整solon-ai-mcpMcpServerManager 内部接口更名为 McpPrimitivesRegistry (MCP 原语注册器)
  • 调整solon-ai-mcpMcpClientProvider 默认不启用心跳机制(随着 mcp-sdk 的成熟,server 都有心跳机制了)
  • 修复solonIndexFiles 路径表达式的兼容问题(添加转换*->@:->!
  • 修复solonParamWrap:getName 加 ‘@Param(name=xxx)’ 注解时没有生效的问题(v3.7.0 出现)。对 solon-cache 会有影响
  • 修复solon-web-vertxVxWebContext._requestBody 如果为 null 文件上传时会出错的问题
  • 修复solon-docs-openapi2返回类型中泛型失效的问题(v3.7.0 出现)
  • snack4 升为 4.0.20
  • jackson 升为 2.19.2
  • liquor 升为 1.6.6
  • asm 升为 9.9
solon 仓库补充说明

新特性:

publicclassDemo{staticScopeLocal<String>LOCAL=ScopeLocal.newInstance();publicvoidtest(){LOCAL.with("test",()->{System.out.println(LOCAL.get());});}}
solon-ai 仓库补充说明

新特性展示:1.MCP 无状态会话(STREAMABLE_STATELESS)和 2.CompletableFuture 异步MCP工具

@McpServerEndpoint(channel=McpChannel.STREAMABLE_STATELESS,mcpEndpoint="/mcp1")publicclassMcpServerTool{@ToolMapping(description="查询天气预报",returnDirect=true)publicCompletableFuture<String>getWeather(@Param(description="城市位置")Stringlocation){returnCompletableFuture.completedFuture("晴,14度");}}

传输方式对应表:(服务端与客户端,须使用对应的传输方式才可通讯)

服务端客户端备注
STDIOSTDIO
SSESSE
STREAMABLESTREAMABLE
STREAMABLE_STATELESSSTREAMABLE对 server 集群很友好
  • STREAMABLE_STATELESS 集群,不需要 ip_hash,但“原语”变化后无法通知 client
solon-flow 仓库补充说明

重要变化:

  • 取消“有状态”、“无状态”概念。
  • solon-flow 回归通用流程引擎(分离“有状态”的概念)。
  • 新增 solon-flow-workflow 为工作流性质的封装(未来可能会有 dataflow 等)。

兼容变化对照表:

旧名称新名称说明
GraphDeclGraphSpec图定义
GraphDecl.parseByXxxGraphSpec.fromXxx图定义加载
Graph.parseByXxxGraph.fromXxx图加载
LinkDeclLinkSpec连接定义
NodeDeclNodeSpec节点定义
ConditionConditionDesc条件描述
TaskTaskDesc任务描述(避免与 workflow 的概念冲突)
FlowStatefulServiceWorkflowService工作流服务
StatefulTaskTask任务
OperationTaskAction任动工作
TaskTypeTaskState任务状态

FlowStatefulService 到 WorkflowService 的接口变化对照表:

旧名称新名称说明
postOperation(..)postTask(..)提交任务
postOperationIfWaiting(..)postTaskIfWaiting(..)提交任务
evel(..)/执行
stepForward(..)/单步前进
stepBack(..)/单步后退
/getState(..)获取状态

新特性预览:Graph 硬编码方式(及修改能力增强)

//硬编码Graphgraph=Graph.create("demo1","示例",spec->{spec.addStart("start").title("开始").linkAdd("01");spec.addActivity("n1").task("@AaMetaProcessCom").linkAdd("end");spec.addEnd("end").title("结束");});//修改GraphgraphNew=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

flowEngine.eval(graph,context.lastNodeId(),context);//...(从上一个节点开始执行)flowEngine.eval(graph,context.lastNodeId(),context);

新特性预览:WorkflowService(替代 FlowStatefulService)

WorkflowServiceworkflow=WorkflowService.of(engine,WorkflowDriver.builder().stateController(newActorStateController()).stateRepository(newInMemoryStateRepository()).build());//1. 取出任务Tasktask=workflow.getTask(graph,context);//2. 提交任务workflow.postTask(task.getNode(),TaskAction.FORWARD,context);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 8:21:26

11、Git分支操作与差异比较全解析

Git分支操作与差异比较全解析 1. 分支切换与创建 在Git中,切换分支是一项常见的操作。例如,使用以下命令可以切换到 bug/pr-1 分支: $ git checkout bug/pr-1 M NewStuff Switched to branch "bug/pr-1"切换后,可以查看 NewStuff 文件的内容: $…

作者头像 李华
网站建设 2026/4/14 6:21:51

29、使用Git与Subversion仓库:全面指南

使用Git与Subversion仓库:全面指南 1. 克隆所有分支 在设置个人的 git svn 仓库时,之前的操作可能仅克隆了单个分支的少量版本。对于想要离线工作的个人而言,这或许足够,但如果整个团队要共享同一仓库,就需要所有分支、标签以及每个分支的所有版本。 Git 提供了完整克…

作者头像 李华
网站建设 2026/4/15 18:56:01

GPT-SoVITS与达芬奇手术机器人结合:远程医疗语音指导

GPT-SoVITS与达芬奇手术机器人结合&#xff1a;远程医疗语音指导 在一场跨国远程手术协作中&#xff0c;主刀医生正通过达芬奇系统进行前列腺切除术。突然&#xff0c;他耳机里传来自己的声音&#xff1a;“注意右侧神经束保护。”——这并非幻听&#xff0c;而是远在千里之外…

作者头像 李华
网站建设 2026/4/16 10:18:11

MySQL数据库访问(C/C++)

参数&#xff1a; mysql&#xff1a;mysql句柄&#xff0c;由 mysql_init() 初始化的连接句柄指针。host&#xff1a;主机名 (如 "localhost"或"127.0.0.1")。user&#xff1a;用户名&#xff0c;如果为NULL&#xff0c;表示使用当前登录用户名。passwd&…

作者头像 李华
网站建设 2026/4/16 10:14:33

健信超导科创板上市:前9个月营收4亿 大涨212% 市值97亿

雷递网 雷建平 12月24日宁波健信超导科技股份有限公司&#xff08;简称&#xff1a;“健信超导”&#xff0c;股票代码&#xff1a;“688805”&#xff09;今日在科创板上市。健信超导本次发行价18.58元&#xff0c;发行4192万股&#xff0c;募资总额为7.79亿元。健信超导基石投…

作者头像 李华