🔥 Solon v3.4.6、v3.5.4、v3.6.0-M1 发布,正式开始 LTS 计划
Solon 框架!
Solon 是新一代,Java 企业级应用开发框架。从零开始构建(No Java-EE),有灵活的接口规范与开放生态。采用商用友好的 Apache 2.0 开源协议,是“杭州无耳科技有限公司”开源的根级项目,是 Java 应用开发的生态基座(可替换美国博通公司的 Spring 生态)。
- 追求: 快速、小巧、简洁
- 提倡: 克制、高效、开放
7年开源时间,累计代码提交1.6万次 ,近半年下载量1200万次。
- 有透明可预期的《版本发布与长期支持计划(LTS)》
- 有“【社区交流】”和“【企业服务】”双重技术支持
同时支持运行时环境(不基于 java-ee 构建,所以可以同时兼容):
- java8, java11, java17, java21, java25
有什么特点(相对 Java Spring 方案)?
Solon 对国产算力非常友好,对 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.6.0-M1 更新说明
- 新增
solon-server-grizzly
插件 - 新增
solon-server-grizzly-add-webscoket
插件 - 新增
solon-server-jetty-jakarta
插件(基于 jetty12 适配) - 新增
solon-server-jetty-add-jsp-jakarta
插件(基于 jetty12 适配) - 新增
solon-server-jetty-add-websocket-jakarta
插件(基于 jetty12 适配) - 调整
solon-serialization-*
弱化 ActionExecuteHandler, Render 的定制,改为 XxxxSerializer 对外定制 - 调整
solon
LogIncubator 接口迁移到内核,由内核控制加载时机(权重提高) - 调整
solon
EntityConverter 接口(替代 Render 和 ActionExecuteHandler 接口) - 引入
slf4j-api
替代solon
内的 LogUtil(减少中转代码) - 引入
solon-expression
替代solon
内的模板表达式工具(仍可使用) - 添加
solon
Condition:onExpression(采用 SnEL 表达式)用于替代 onProperty(标为弃用) - 添加
solon
SnelUtil(基于 SnEL 且兼容旧的 TmplUtil) 替代 TmplUtil(标为弃用)//如果有 # 则为新表达式 - 添加
solon-mvc
List<UploadedFile>
注入支持(用UploadedFile[]
性能更好) - 添加
solon-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
- reactor-core 升为 3.7.4
- graalvm.buildtools 升为 0.11.0
示例:
@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) {
}
}
v3.5.4 更新说明
- 优化
solon-test
@SolonTest
支持非 solon 的 main 程序单测启动 - 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次(之前可能会被外部触发多次)
- 优化 solon-rx SimpleSubscriber 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
- 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
- 优化 solon-web-rx RxSubscriberImpl 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
- 优化 solon-net-httputils sse 与背压处理的兼容性
- 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题(并更名为 contentCharset,原名标为弃用)
- 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题
v3.4.6 更新说明
- 优化
solon-test
@SolonTest
支持非 solon 的 main 程序单测启动 - 优化 solon-rx 确保 SimpleSubscriber:doOnComplete 只被运行一次(之前可能会被外部触发多次)
- 优化 solon-rx SimpleSubscriber 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
- 优化 solon-net-httputils 确保 TextStreamUtil:onSseStreamRequestDo 只会有一次触发 onComplete
- 优化 solon-web-rx RxSubscriberImpl 改为流控模式(只请求1,之前请求 max)//所有相关的都要测试
- 优化 solon-net-httputils sse 与背压处理的兼容性
- 修复 solon-net-httputils JdkHttpResponse:contentEncoding 不能获取 charset 的问题(并更名为 contentCharset,原名标为弃用)
- 修复 solon-docs-openapi2 ApiModel 中使用 UploadedFile 类型是解析报错的问题
项目仓库地址?
- gitee:https://gitee.com/opensolon/solon
- gitcode: https://gitcode.com/opensolon/solon
- github:https://github.com/opensolon/solon
官网?

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
🔥 🔥 MyBatis-Flex v1.11.2 发布,一个优雅的 MyBatis 增强框架
MyBatis-Flex: 一个优雅的 MyBatis 增强框架 特征 1、很轻量 MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。 2、只增强 MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的任何功能。 3、高性能 MyBatis-Flex 采用独特的技术架构、相比许多同类框架,MyBatis-Flex 的在增删改查等方面的性能均超越其 5~10 倍或以上。 4、更灵动 MyBatis-Flex 支持多主键、多表查询、逻辑删除、乐观锁、数据脱敏、数据加密、多数据源、分库分表、字段权限、 字段加密、多租户、事务管理、SQL 审计... 等等等等。 这一切,免费且灵动。 MyBatis-Flex v1.11.2 更新细节如下: 新增:添加 Assert 方便在执行 update 的时候进行断言 新增:添加新函数并增强数据库类型判断能力,感谢@fangzhengjin 新增:添加 stringAgg 和 listAgg 函数的重载方法,感谢@fangzhengjin 新增:添加新函数并增强数据库...
-
下一篇
Mybatis-Flex v1.11.3 已经发布,优雅的 Mybatis 增强框架
Mybatis-Flex v1.11.3 已经发布,优雅的 Mybatis 增强框架 此版本更新内容包括: 修复: QueryColumn.between_(values) 不能为 null 的问题 #ID03CH 详情查看:https://gitee.com/mybatis-flex/mybatis-flex/releases/v1.11.3
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Crontab安装和使用
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器