Releases: opensolon/solon
Releases · opensolon/solon
Solon v2.9.1
- 新增 solon.boot.vertx 插件,支持 cloud gateway 开发与 web 开发
- 优化 solon.cloud.gateway 改由 solon.boot.vertx 驱动(可与 web 开发复用)
- 优化 solon.cloud.gateway 改为流式分块代理转发(chunk)
- 优化 solon.security.validation 执行拉截时的异常消息(保持与旧版兼容)
- 优化 solon LifecycleBean 和 Lifecycle 设计
Solon v2.9.0
- 新增 solon.cloud.gateway 插件
- 新增 solon.rx 插件
- 添加 solon.data 配置节
solon.dataSources
(用于自动构建数据源),支持 ENC 加密符 - 添加 solon.docs 配置节
solon.docs
(用于自动构建文档摘要) - 添加 solon.view.prefix 配置项支持 "file:" 前缀(支持体外目录)
- 添加 solon.scheduling.simple SimpleScheduler::isStarted 方法
- 添加 solon
@Condition(onBean, onBeanName)
条件属性 - 添加 solon.validation ValidUtils 工具类
- 添加 solon LifecycleBean:postStart 方法
- 添加 solon MethodInterceptor 接口,替代 Interceptor(旧接口保留)
- 添加 solon.net.httputils 扩展机制,并与 solon.cloud 自动整合
- 添加 solon.net.httputils HttpResponse::headerNames 方法
- 添加 solon.cloud CloudDiscoveryService:findServices 方法
- 添加 solon
solon.plugin.exclude
应用属性配置 - 添加 solon
solon.app.enabled
应用属性配置(Solon.cfg().appEnabled()
可获取) - 添加 solon
${.url}
应用属性配置本级引用 - 添加 solon
--cfg
启动参数支持(便于内嵌场景开发) - 添加 托管类构造参数注入支持(对 kotlin 更友好)
- 调整 solon.cloud.httputils 标为弃用,由 solon.net.httputils 替代
- 调整 smarthttp,jetty,undertow 的非标准方法的 FormUrlencoded 预处理时机
- 调整 solon.auth maven 包更名为 solon.security.auth (原 maven 包保留)
- 调整 solon.validation maven 包更名为 solon.security.validation (原 maven 包保留)
- 调整 solon.vault maven 包更名为 solon.security.vault (原 maven 包保留)
- 优化 AppContext::beanMake 保持与 beanSacn 相同的类处理
- 优化 solon.serialization.jackson 兼容 @jsonformat 注解时间格式和时间格式配置并存
- 优化 solon Context::body 的兼容性,避免不可读情况
- 优化 solon 调试模式与 gradle 的兼容性
- 优化 solon.boot FormUrlencodedUtils 预处理把 post 排外
- 优化 solon.web.rx 允许多次渲染输出
- 优化 kafka-solon-cloud-plugin 添加 username, password 简化配置支持(简化有账号的连接体验)
- 优化 solon.boot 413 状态处理
- 优化 solon.boot.smarthttp 适配的 maxRequestSize 设置(取 fileSize 和 bodySize 的大值)
- 优化 solon AppContext 注册和查找时以 rawClz 为主(避免以接口注册时,实例类型查不到)
- 优化 solon.mvc kotlin data class 带默认值的注入支持(表单模式下)
- 优化 solon PathAnalyzer 添加 addStarts 参数选择,支持域名匹配
- 修复 solon.view.thymeleaf 模板不存在时没有输出 500 的问题
- 修复 solon.serialization.jackson 泛型注入失效的问题
- 修复 solon.boot.smarthttp 适配在 chunked 下不能读取 body string 的问题
- 修复 solon-openapi2-knife4j 没有配置时不能启动的问题(默认改为不启用)
- wood 升为 1.3.0
- snack3 升为 3.2.109
- socket.d 升为 2.5.11
- zookeeper 升为 3.9.2
- dromara-plugins 升为 0.1.2
- kafka_2.13 升为 3.8.0
- beetlsql 升为 3.30.10-RELEASE
- beetl 升为 3.17.0.RELEASE
- mybatis 升为 3.5.16
- mybatis-flex 升为 1.9.6
- sqltoy 升为 5.6.20
- dbvisitor 升为 5.4.3
- bean-searcher 升为 4.3.0
- liteflow 升为 2.12.2
- aws.s3 升为 1.12.769
- powerjob 升为 5.1.0
- netty 升为 4.1.112.Final
- reactor-core 升为 3.6.9
- reactor-netty-http 升为 1.1.22
- vertx 升为 4.5.9
- undertow 升为 2.2.34.Final
- jetty 升为 9.4.55.v20240627
- smarthttp 升为 1.5.9
Solon v2.8.6
- 添加 solon Context::outputStreamAsGzip 方法(方便手动 gzip 输出)
- 添加 solon
@Bean(initMethod, destroyMethod)
配置属性 - 添加 solon ActionLoaderDefault:postActionPath 方法(方便重写)
- 添加 solon.boot
server.request.useRawpath
配置 - 添加 solon.boot http-server 同端口的 ws 信号注册
- 优化 solon.boot 当有
server.?.name
配置时才注册 ws,sd 信号 - 优化 solon MvcFactory:resolveParam 更名为 resolveActionParam(旧名,标为弃用)
- 优化 solon DownloadedFile 取消空构造函数,避免内容为 null 的情况
- 优化 solon UploadedFile::getContentSize 避免可能为 null 的情况
- 优化 solon.proxy AOT 代理增加 接口 default 方法代理支持
- 优化 solon.proxy ASM 代理增加 接口 default 方法代理支持
- 优化 solon.net SubProtocolCapable:getSubProtocols 设计,增加请求子协义校验的支持
- 优化 solon 停止结束语打印
- 修复 solon.sessionstate.local LocalSessionState::sessionKeys 数据获取错误
- 修复 solon.serialization.jackson 的 boolAsInt 配置 对小写 bool 无效的问题
- 修复 solon.serialization.fastjson2 的 boolAsInt 配置无效的问题
- 修复 solon.config.yaml 当配置 key 为数字时会出错的问题
- fastjson2 升为 2.0.52
- snack3 升为 3.2.107
- wood 升为 1.2.13
- socket.d 升为 2.5.10
- folkmq 升为 1.7.6
- smartsocket 升为 1.5.50
- smarthttp 升为 1.5.5
Solon v2.8.5
- 添加 solon.cache.redisson RedissonClientOriginalSupplier 类
- 添加 solon MethodKey 类
- 添加 solon ClassUtil:resolveClassLoader 方法
- 添加 solon Router::getBy(controllerClz) 方法,用于管理需求
- 添加 solon ChainManager::addExecuteHandler(e,index) 方法,支持执行器排序
- 添加 solon RouterInterceptor::postArguments 提交参数确认(更方便 mvc 参数定制)
- 添加 solon UploadedFile::getContentAsBytes 方法
- 添加 solon DownloadedFile 动态 304 的支持
- 添加 solon Component:registered,控制形态注册
- 添加 solon.data 序列化新实例 JsonSerializer.typedInstance
- 添加 captcha-solon-plugin 图形验证码接口注释,之后使用smart-doc会拥有更完整的文档内容
- 优化 solon
solon.config.load
支持classpath:
前缀 - 优化 solon.data 的 JsonSerializer,JavabinSerializer 类加载器处理
- 优化 solon.sessionstate.jedis 的 JsonSerializer,JavabinSerializer 类加载器处理
- 优化 solon Serializer 接口定义,更好支持泛型
- 优化 solon CacheService 接口定义,更好支持泛型
- 优化 mybatis-plus-extension-solon-plugin 增加
@Db IService
注入支持 - 优化 mybatis-solon-plugin 没有 mappers 时的提示
- 修复 solon.logging forward 时会清掉 mdc 的问题
- 修复 solon 一个注解同时用 beanInterceptorAdd 和 beanExtractorAdd 时 代理失效的问题
- redisx 升为 1.6.5
- snack3 升为 3.2.104
- wood 升为 1.2.12
- socket.d 升为 2.5.9
- folkmq 升为 1.7.4
- water 升为 2.13.3
- nacos2 升为 2.3.2(更好兼容 GraalVM Native)
- smartsocket 升为 1.5.46
- smarthttp 升为 1.5.2
Solon v2.8.4
- 新增 solon.net.httputils 插件
- 添加 BeanWarp::rawClz,优化 BeanWrapLifecycle 的检测方式(避免 LifecycleBean 重复注册)
- 添加 CloudBreakerException 异常类,用于 CloudBreakerInterceptor
- 添加 CloudStatusException 异常类,用于 Cloud 触发的 4xx 状态异常
- 添加 Router 移除控制器的接口
- 添加 openapi2 支持 action 返回接口类型
- 简化 Router 注册控制器的方式
- 优化 solon.boot.websocket 适配,在重启时端口不能立即复用的问题
- 优化 List[Bean] 注入,支持排序
- 优化 AppContext::beanShapeRegister 改为实例检测(之前为类型检测)
- 调整 429 状态改由 CloudBreakerException 发出(访问量过大时)
- 调整 415 状态改由 StatusException 发出(Consumes 不匹配)
- 调整 用 solon.net.httputils 替换 solon.test 里的 HttpUtils(统一代码)
- 调整
@Consumes
@Produces
作用域,支持加在类上 - 调整 solon-rpc 快捷包去掉 hessian 依赖(如有需要手动引入)
- 调整 CloudBreakerInterceptor 融断时改为 CloudBreakerException(之前为直接设定 429 状态),更方便过滤和拦截
- 修复
@Consumes
@Produces
在 solon.docs 里无效的问题 - fury 升为 0.5.1
- liteflow 升为 2.12.1
- socket.d 升为 2.5.7
- folkmq 升为 1.7.2
- mybatis-flex 升为 1.9.3
- smartsocket 升为 1.5.44
- smarthttp 升为 1.4.3
- undertow 升为 2.2.32.Final
Solon v2.8.3
兼容说明
404 和 405 等 4xx 状态的“定制”,通过 StatusException 处理(如果没有定制,不用管)。例如:
- 旧的 404 识别(比较模糊)
@Component(index = 0) //index 为顺序位(不加,则默认为0)
public class AppFilter implements Filter {
@Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
chain.doFilter(ctx);
if(ctx.getHandled() == false){
ctx.render(Result.failure(404, "资源不存在"));
}
}
}
- 新的 404 识别(更丰富,更精准)
@Component(index = 0) //index 为顺序位(不加,则默认为0)
public class AppFilter implements Filter {
@Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
try{
chain.doFilter(ctx);
} catch (StatusException e) {
if (e.getCode() == 404){
ctx.render(Result.failure(404, "资源不存在"));
} else if (e.getCode() == 405){
ctx.render(Result.failure(405, "资源方式不支持"));
} else if (e.getCode() == 400){
ctx.render(Result.failure(400, "请求格式或参数有问题"));
}
}
}
}
更多异常类型,可见:《Solon 开发之异常》。另一处重要变化为 JUnit5 成为默认单测方案,详见:《Solon Test 开发》
更新说明
- 新增 thrift-solon-cloud-plugin 插件
- 新增 solon.serialization.jackson.xml 插件
- 添加
@Destroy
注解(与@Init
呼应) - 添加 Serializer 接口,统一多处模块的序列化定义
- 添加 BytesSerializerRender 类,对应 StringSerializerRender
- 添加 solon.net.stomp ToStompWebSocketListener 适配 WebSocket 子协议验证
- 添加 solon.net ToSocketdWebSocketListener 适配 WebSocket 子协议验证
- 添加 graphql-solon-plugin GraphqlWebsocket 适配 WebSocket 子协议验证
- 添加 WebSocket 子协议校验支持(smarthttp,jetty,undertow,java-websocket,netty-websocket)
- 添加 应用配置键名二次引用支持
- 添加 folkmq 适配 EventLevel.instance 订阅支持
- 添加 rocketmq5 适配 EventLevel.instance 订阅支持
- 添加 solon.boot.socketd 对 ssl 配置的支持
- 添加 beetl 适配自定义 Tag 注入支持
- 添加 enjoy 适配自定义 Tag 注入支持
- 添加 StatusException 异常类型
- 调整 AuthException 改为扩展自 StatusException(之前为 SolonException)
- 调整 ValidatorException 改为扩展自 StatusException(之前为 SolonException)
- 调整 Action 参数解析异常类型为 StatusException(之前为 IllegalArgumentException)
- 调整 solon.test 默认为 junit5 并简化 SolonTest 体验(不用加 ExtendWith 了),需要 junit4 的需引入 solon-test-junit4
- 优化 CloudClient.event().newTranAndJoin() 增加 inTrans 判断
- 优化 mybatis-solon-plugin 在有 mapper 配置,但无 mapper 注册时的异常提示(原为 warn 日志提示)
- 优化 RouteSelectorExpress 的路由顺序(常量的,优于变量的)
- 优化 kafka 适配的 ack 处理
- 修复 IndexUtil:buildGatherIndex 处理字段时,会出错的问题
- snack3 升为 3.2.100
- fastjson2 升为 2.0.51
- socket.d 升为 2.5.3
- folkmq 升为 1.5.2
- wood 升为 1.2.11
- sqltoy 升为 5.6.10.jre8
- mybatis-flex 升为 1.9.1
- smarthttp 升为 1.4.2
- okhttp 升为 4.12.0
- xxl-job 升为 2.4.1
- graphql 升为 18.3
Solon v2.8.0
- 添加
@Bean::injected
- 添加
TmplUtil
工具类(提供简单模板支持) - 添加
RoutingDataSource
对事务管理的支持(即动态数据源支持事务管理) - 添加 Solon Cloud Event 消息事务支持!
- 优化 Bean 集合注入时,乎略泛型
- 优化 smarthttp 和 jetty 适配,queryString 和 from-data 同时有数据时的处理
- 优化 jetty 适配的临时目录处理
- 优化 solon.serialization.properties 处理,扩大范围
- 优化 onMissingBean 条件与 Bean 集合注入的边界问题!
- 优化 sa-token 的 json 序列化处理
- 优化 配置加载同步,带 - 的不同步到 System
- snack3 升为 3.2.97
- socket.d 升为 2.4.16
- folkmq 升为 1.4.4
- fastjson2 升为 2.0.50
- mybatis-flex 升为 1.8.9
- sqltoy 升为 5.6.5.jre8
- sa-token 升为 1.38.0
- kafka 升为 3.7.0
- water 升为 2.13.2
- luffy 升为 1.7.5
Solon v2.7.6
- 新增 solon-docs-openapi2-javadoc 插件
- 新增 solon.serialization.properties 插件(支持 ?a.b=1 prop 风格的参数)
- 新增 solon.net.stomp 插件
- 添加 solon.boot.jetty 原生编译支持
- 添加 solon.boot.undertow 原生编译支持
- 添加 solon 对
classpath*:
表达式支持(兼容旧的习惯) - 添加 solon Utils:pid 方法(方便获取进程号)
- 添加 solon.data TranUtils:getDataSourceProxy 方法
- 添加 solon.cloud CloudProps:getNamespace 方法,允许每个中间件有自己 namespace 配置
- 添加 solon.net WebSocketListener::onPing,onPong 方法,允许获得 ping/pong 的监听
- 添加 solon.net WebSocketListenerSupplier 接口,简化 ws 扩展适配
- 添加 solon.validation 校验出错的结果里带上当前校验的名称(该名称是当前校验的参数名称或者是实体对象字段名称)
- 添加 nami json 解码器,对普通 string 的支持(如果返回类型为 string ,则解码失败时以普通 string 返回)
- 添加 "solon.config.load" 对资源表达式的支持(例:"config/*.yml")
- 添加 solon.boot.smarthttp 对参数 key 的 urlDecode 处理
- 优化 solon.net ToSocketdWebSocketListener 防止 websocket 恶意空连
- 优化 非 solon 测试环境下,日志打印添加 pid 显示支持
- 优化 ResourceUtil 扫描类或资源的能力,增加支持
*Mapper
表达式 - 优化 Aot 时的函数注册处理(修复 原生运行时组件代理失败的问题)
- 优化 Bean 集合的注入处理
- 优化 StaticResourceHandler 对静态资源的压缩支持,改为先查找压缩文件
- 修复 solon.boot.undertow 的 ws 适配在 window 下异常关闭处理时,无法触发 onClose 事件的问题
- 修复 solon.boot.websocket.netty 接收二进制码时出错的问题
- 修复 nami 在请求参数为空时被转换成GET操作的问题
- 修复 solon.docs.openapi2 没有同步 operation.security 的问题。
- 调整 solon.net websocket 没有路由记录时,将自动关闭(更安全)
- 调整 solon Condition::onMissingBean 标为弃用
- redisx 升为 1.6.3
- fastjson2 升为 2.0.49
- wood 升为 1.2.9
- mybatis-flex 升为 1.8.8
- snack3 升为 3.2.95
- socket.d 升为 2.4.14
Solon v2.7.5
- 新增 solon.web.rx 插件(替代 solon.web.flux)
- 添加 SolonException 异常基类
- 添加 solon.view 模板渲染器指定视图前缀的构造函数
- 添加 solon.view 模板渲染器的容器注册(提供容器扩展方式)
- 添加 solon.data TranUtils:getConnectionProxy 接口,方便不同的事务对接
- 添加 solon.scheduling 对多个 JobInterceptor 及排序支持
- 添加 solon.cloud 对多个 CloudJobInterceptor 及排序支持
- 添加 solon.validation
@Size
验证注解支持参数 - 添加 AppContext::removeWrap 接口
- 添加 folkmq-solon-cloud-plugin 对 event:key 支持
- 添加 大写开头的环境变量注入支持
- 调整 bean 的基类注册的排除条件改为“java.”开头(之前为包含)
- 修复 solon.scheduling.simple 在使用单点 cron 表过式时,会出现 npe 的问题
- socket.d 升为 2.4.10
- folkmq 升为 1.4.2
- snack3 升为 3.2.92
- jackson 升为 2.17.0
- fastjson2 升为 2.0.48
- mybatis-flex 升为 1.8.7
- beetlsql 升为 3.30.4-RELEASE
- netty 升为 4.1.107.Final
- vertx 升为 4.5.6
- hutool 升为 5.8.27
- smartsocket 升为 1.5.43
- smarthttp 升为 1.4.1
- aws-java-sdk-s3 升为 1.12.695
- grpc 升为 1.62.2
- thrift 升为 0.20.0
- dubbo3 升为 3.2.11
- freemarker 升为 2.3.32
- beetl 升为 3.16.0.RELEASE
- thymeleaf 升为 3.1.2.RELEASE
- log4j 升为 2.23.1
- slf4j 升为 2.0.12
Solon v2.7.3
- 增加 java 22 支持
- 添加 solon.threads.virtual.enabled 配置支持
- 添加 solon.cloud.httputils 异步处理接口
- 添加 NamiClient::localFirst 属性,增加本地实现组件优先支持
- 添加 Context::filesDelete 批量删除临时文件方法
- 优化 solon.view 后端模板的编码配置处理
- 优化 非 http/https 协议包的处理(被人刷假包)
- 优化 local-solon-cloud-plugin 本地服务发现的查找处理,避免失败
- 优化 部分锁的处理方式(synchronized 改为 ReentrantLock)
- 优化 jetty 的 multipart 解析处理
- 修复 solon.health HealthIndicator 自动注册无效的问题
- socket.d 升为 2.4.7
- folkmq 升为 1.3.2
- snack3 升为 3.2.90
- sqltoy 升为 5.6.2.jre8
- asm 升为 9.6
- nacos1 升为 1.4.7
- nacos2 升为 2.3.1
- redisson 升为 3.27.2
- undertow 升为 2.2.31.Final