Releases: opensolon/solon-java25
Releases · opensolon/solon-java25
Solon Java25 v4.0.0
1、纪年
- v0: 2018 ~ 2019 (2y)
- v1: 2020 ~ 2022 (3y)
- v2: 2023 ~ 2024 (2y)
- v3: 2024 ~ 2026 (1.5y)
- v4: 2026 ~
2、v3.x 升到 v4.x 提醒
- 提醒1:之前没有使用弃用接口的,可以直接升级
- 提醒2:有使用弃用接口的。建议先升级到 3.10.7;替换弃用代码后,再升级到 4.0.0
总体思考是:移除弃用方法或类。总体变化不大。其中,solon ai 体系变化较大(skill 概念改为 talent)
3、更新说明(更详细内容见后面的“附件”)
for solon 生态:
- 新增 mcp-json-jackson2
- 新增 solon-view-aifei-enjoy 插件
- 新增 solon-cache-caffeine3 插件
- 新增 solon-ai-talent-gateway(由 solon-ai-skill-restapi 和 solon-ai-skill-toolgateway 合并而来)
- 新增 solon-ai-talent-mount 才能插件
- 添加 solon
ScopeLocal.getOr(Supplier)方法 - 添加 solon
AppContext.resolvePlaceholders方法 - 添加 solon-config-snack4 开放属性序列化的 Options 定制支持
- 添加 solon-flow FlowContext.data(), serData() 方法(vars, serVars 标为弃用)
- 调整 solon-cache-caffeine 增加 md5 控制、默认时间、缓存头控制支持
- 调整 solon-cache-xxx enableMd5key 默认为 false
- 调整 solon Utils.annoAlias 标为弃用(由 Utils.valueOr 替代)
- 移除 solon-flow FlowContext.model() 方法 //.vars()
- 移除 solon-flow Link.condition 方法 //.when
- 移除 solon-expression StandardContext 类
- 修复 solon-serialization-snack4 Snack4StringSerializer.name 为 “snack4-json”
- eggg 升为 1.1.3
- snack4 升为 4.0.52
- liquor 升为 1.6.8
- socketd 升为 2.6.0
- folkmq 升为 1.8.0
- asm 升为 9.10
- lombok 升为 1.18.46
- slf4j 升为 2.0.18
- log4j 升为 2.26.0
- junit5 升为 5.14.4
- hutool 升为 5.8.44
- snakeyaml 升为 2.6
- fastjson2 升为 2.0.62
- jackson2 升为 2.21.4
- gson 升为 2.14.0
- redisson 升为 3.52.0
- lettuce 升为 6.8.2.RELEASE
- kafka 升为 3.9.2
- reactor-netty-http 升为 1.3.5
- netty 升为 4.1.134.Final
- smartsocket 升为 2.0.0
- smarthttp 升为 2.5.19
- vert.x 升为 4.5.27
- tomcat 升为 9.0.118
- undertow 升为 2.2.39.Final
- rocketmq5 升为 5.2.0
- nacos3 升为 3.2.1
- swagger 升为 1.6.16
- swagger2 升为 2.2.50
- undertow (for java17) 升为 2.3.24.Final
- jetty (for java17) 升为 12.1.9
- xxl-job-core3 (for java17) 升为 3.4.0
- jackson3 (for java17) 升为 3.1.3
- tomcat (for java17) 升为 11.0.22
for solon-ai 生成
- 变更 solon skill “概念”改为 solon talent(避免与 agent skill 的冲突)
- 新增 mcp-core(替换之前的 mcp-sdk,保持与官方相同命名)
- 新增 mcp-json-jackson2
- 新增 solon-ai-sandbox
- 新增 solon-ai-mcp MCP_2025_11_25 协议支持(支持 ServerTransportSecurityValidator 签权)
- 新增 solon-ai-talent-mount 才能插件(原 PoolManager 独立出来)
- 添加 solon-ai-talent-openapi OpenApiSkill.removeApi 方法
- 添加 solon-ai-talent-openapi ApiSource 超时配置支持
- 添加 solon-ai-talent-gateway McpGatewaySkill 专门处理 mcp(ToolGatewaySkill 可以处理所有工具)
- 添加 solon-ai-talent-cli TerminalTalent 系统级沙盒限制支持
- 添加 solon-ai-core ChatOptions:httpCustomize 方法
- 添加 solon-ai-core Talent::isEnabled 方法
- 添加 solon-ai-core AiConfig::standard(替代 provider 之前的作用)
- 添加 solon-ai-core ReActAgent::getModel 方法
- 添加 solon-ai-agent ReActInterceptor.onReasonStart 事件方法
- 添加 solon-ai-agent AgentTrace.getOriginalPrompt, getWorkingMemory 方法
- 添加 solon-ai-agent AgentTrace.getRunId 方法
- 添加 solon-ai-agent AgentChunk.getRunId 方法
- 添加 solon-ai-agent TeamAgent 添加初心标记
- 添加 solon-ai-agent ToolExchanger 类
- 添加 solon-ai-mcp McpClientProvider allowedTools, disallowedTools 工具控制机制
- 添加 solon-ai-harness bashAsyncEnabled 开关
- 添加 solon-ai-harness HarnessEngine.removeApi 方法
- 添加 solon-ai-harness HarnessProperties.mountPools 属性(替代 skillPools,后者标为弃用)
- 添加 solon-ai-harness 用 McpGatewaySkill 替换 ToolGatewaySkill(更有争对性)
- 优化 solon-ai-agent 初始化时(rest)添加快照持久化
- 优化 solon-ai-harness AgentFactory
edit权限添加read、write控制 - 优化 solon-ai-agent ContextCompressionInterceptor 压缩时机(从 onObservation 改为 onReasonStart),并增加系统词大小
- 优化 solon-ai-agent ContextCompressionInterceptor 增强上下文压缩拦截器中过期区 tool-use 原子序列的追溯保护,并完善文档注释
- 优化 solon-ai-agent ContextCompressionInterceptor 算法,增加 tools token
- 优化 solon-ai-dialect-openai OpenaiResponses 协议兼容性
- 调整 solon-ai-core 取消 ChatConfig.reasoningFieldName 配置(这个配置不合理)
- 调整 solon-ai-core 移除 SkillProvider 类
- 调整 solon-ai-core 移除 toolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-core 移除 defaultToolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-agent 移除 toolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-agent 移除 defaultToolAdd(Object) 方法(指向不明,容易出错)
- 调整 solon-ai-mcp McpClientProperties 默认不启用心跳(之前默认为 30 心跳一次)
- 调整 solon-ai-mcp McpProviders 更名为 McpClientProviders
- 调整 solon-ai-agent ActionChunk:ActionChunk 更名为 ObservationChunk;ActionStartChunk 更名为 ActionChunk
- 调整 solon-ai-agent ReActInterceptor.onAction,onObservation: toolName,args,result 合并为 toolExchanger(并允许修改)
- 调整 solon-ai-agent ReActInterceptor.onReason 更名为 onReasonEnd(和 onReasonStart 凑成一对)
- 调整 solon-ai-agent ReActAgent.maxSteps 更名为 maxTurns(保持行业习惯)
- 调整 solon-ai-agent SummarizationInterceptor 更名为 ContextCompressionInterceptor(更符合语义)
- 调整 solon-ai-talent-cli PoolManager 实现细节,并添加 refresh(alias)
- 调整 solon-ai-talent-cli 技能标识由 aliasPath 统一改为 name,并优化技能池加载逻辑及代码格式
- 调整 solon-ai-talent-web WebfetchTool 更名为 WebfetchTalent; WebsearchTool 更名为 WebsearchTalent; CodeSearchTool 更名为 CodeSearchTalent
- 调整 solon-ai-talent-diff ApplyDiffTool 更名为 ApplyDiffTalent;ApplyPatchTool 更名为 ApplyPatchTalent
- 调整 solon-ai-harness HarnessEngine 打断与 HarnessProperties 关联(后者删除),避免耦合影响未来的调整
- 调整 solon-ai-harness HarnessEngine 移除 mainModel 字段(减兴缓存麻烦)
- 移除 solon-ai-skill-browser(包太大了,没必要)
- 移除 solon-ai-skill-restapi (由 solon-ai-talent-gateway 替代)
- 移除 solon-ai-skill-toolgateway (由 solon-ai-talent-gateway 替代)
- 移除 mcp-sdk(由 mcp-core 替代)
- 修复 solon-ai-mcp WebRxStreamableHttpTransport 没有 event 的消息会出错的问题(优化非规范兼容)
- 修复 solon-ai-mcp WebRxStreamableHttpTransport 没有 contentType 的消息会出错的问题(优化非规范兼容)
- 修复 solon-ai-agent ContextCompressionInterceptor 压缩后可能会引起 ToolMessage 无法对齐的问题
- mcp-sdk 升为 1.1.3
4、附件:弃用配置移除对应表(要认真核对)
移除
| 应用或插件 | 移除配置名 | 替代配置名 | |
|---|---|---|---|
| solon-server | server.session.state.domain |
server.session.cookieDomain |
|
server.session.state.domain.auto |
server.session.cookieDomainAuto |
||
| solon-web-staticfiles | solon.staticfiles.maxAge |
solon.staticfiles.cacheMaxAge |
|
| nacos2-solon-cloud-plugin | solon.cloud.nacos2.* |
solon.cloud.nacos.* |
5、附件:弃用插件移除对应表(要认真核对)
移除(以下插件已由项目官方仓库维护,或者直接使用即可)
| 移除插件 | 替代插件 | |
|---|---|---|
solon-ai-skill-* |
solon-ai-talent-* |
|
easy-trans-solon-plugin |
com.fhs-opensource:easy-trans-solon-plugin |
|
sms4j-solon-plugin |
org.dromara.sms4j:sms4j-solon-plugin |
|
beetlsql-solon-plugin |
com.ibeetl:sql-solon-plugin |
|
dbvisitor-solon-plugin |
net.hasor:dbvisitor-solon |
|
sqltoy-solon-plugin |
com.sagframe:sagacity-sqltoy-solon-plugin |
|
mybatis-sqlhelper-solon-plugin |
com.github.fangjinuo.sqlhelper:sqlhelper-mybatis |
|
mybatis-pagehelper-solon-plugin |
com.github.pagehelper:pagehelper |
|
mybatis-plus-solon-plugin |
com.baomidou:mybatis-plus-solon-plugin |
|
mybatis-plus-extension-solon-plugin |
同上 | |
mybatis-flex-solon-plugin |
com.mybatis-flex:mybatis-flex-solon-plugin |
|
fastmybatis-solon-plugin |
net.oschina.durcframework:fastmybatis-solon-plugin |
|
bean-searcher-solon-plugin |
cn.zhxu:bean-searcher-solon-plugin |
|
mybatis-tkmapper-solon-plugin |
tk.mybatis:mapper-solon-plugin |
|
sa-token-solon-plugin |
cn.dev33:sa-token-solon-plugin |
|
sa-token-snack4 |
同上 | |
sa-token-dao-redisson-jackson |
同上 | |
liteflow-solon-plugin |
com.yomahub:liteflow-solon-plugin |
|
forest-solon-plugin |
com.dtflys.forest:forest-solon-plugin |
6、附件:弃用注解或属性移除对应表(会有编译提醒)
移除注解或属性
| 应用或插件 | 弃用注解或属性 | 替代注解或属性 | |
|---|---|---|---|
| solon | org.noear.solon.annotation:: |
||
@Bean:priority() |
@Condition:priority() |
||
@Bean:injected() |
@Bean:autoInject() |
||
| solon-data | org.noear.solon.data.annotation:: |
||
@Tran |
@Transaction |
||
| nami | org.noear.nami.annotation:: |
||
@NamiBody:contentType() |
@NamiMapping:headers() |
7、附件:Solon 生态弃用类或方法移除对应表(会有编译提醒)
- solon 移除类或方法
| 应用或插件 | 移除类或方法名 | 替代类或方法名 | |
|---|---|---|---|
| solon | 包(org.noear.solon) |
||
Solon:start(NvMap) |
/ | ||
SolonApp:add*() |
SolonApp:router():add*() |
||
SolonApp:filter*() |
SolonApp:router():filter*() |
||
SolonApp:get*() |
SolonApp:router():get*() |
||
SolonApp:post*() |
SolonApp:router():post*() |
||
SolonApp:head*() |
SolonApp:router():head*() |
||
SolonApp:put*() |
SolonApp:router():put*() |
||
SolonApp:patch*() |
SolonApp:router():patch*() |
||
SolonApp:delete*() |
SolonApp:router():delete*() |
||
SolonApp:socketd*() |
SolonApp:router():socketd*() |
||
SolonApp:delete*() |
SolonApp:router():delete*() |
||
SolonApp:converterManager() |
SolonApp:converters() |
||
SolonApp:serializerManager() |
SolonApp:serializers() |
||
SolonApp:renderManager() |
SolonApp:renders() |
||
SolonApp:factoryManager() |
SolonApp:factories() |
||
SolonApp:renderManager() |
SolonApp:renders() |
||
SolonApp:chainManager() |
SolonApp:chains() |
||
SolonProps:plugs*()... |
Solon Java25 v3.10.0
3.10.0
Solon Java25 v3.9.1
- 修复
solon-java25ScopeLocalJdk25 NoSuchElementException 异常问题
Solon Java25 v3.9.0
3.9.0
Solon Java25 v3.8.3
- 优化
solon-java25的 ScopeLocal 适配 - 调整
solon-java25ScopeLocalJdk25:set, remove 增加异常提示(否则容易出错)
Solon Java25 v3.8.0
Update README.md