Solon v2.2.7 发布,支持 Java 20

Solon 是一个高效的 Java 应用开发框架:更快、更小、更简单。也是一个有自己接口标准规范的开放生态。

150来个生态插件,覆盖各种不同的应用开发场景:

相对于 Spring Boot 和 Spring Cloud 的项目:

  • 启动快 5 ~ 10 倍。 (更快)
  • qps 高 2~ 3 倍。 (更高)
  • 运行时内存节省 1/3 ~ 1/2。 (更少)
  • 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小)
  • 同时支持 jdk8, jdk11, jdk17, jdk20。

似曾相似的体验,入门更简单,迁移很方便:

@Controller
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app->{
            //手写模式
            app.get("/", ctx -> ctx.outputAsJson("{message:'Hello world!'}"))
        });
    }

    //注解模式
    @Get
    @Socket
    @Mapping("/hello")
    public String hello(String name) {
        return String.format("Hello %s!", name);
    }
}

入门探索视频(用户录制):

《bilibili - solon 入门探索》

本次更新:

  • 增加 @Path 替代 @PathVar(简短些),不过这个注解本身意义不大
  • 增加 ResourceUtil::findResource 接口(ssl.keyStore 改用此接口)
  • 增加 “application.xxx” 配置的弃用警告日志
  • 增加 “solon.config” 多文件与内外文件支持
  • 增加 “solon.config.add”(添加外部) 配置,用于替代 “solon.config”
  • 增加 “solon.config.load”(加载内部) 配置,支持数组配置
  • 增加 Props::getMap 接口,替代 Props::getXmap
  • 调整 file-s3-solon-cloud-plugin 插件, "file.default"改为动态获取,增加bucket接口
  • 调整 maven 版本管理,由 ${xxx.ver} 改为 ${xxx.version}
  • 优化 请求参数 required 的提示
  • 优化 Props::getProp 减少 forEach 次数
  • 修复 solon.scheduling.simple 插件,在启动卡时后不能运行 cron=* * * * * ?
  • 修复 AopContext::ProxyComponent 不能被 copyto 的问题
  • sqltoy 升为 5.2.41
  • wood 升为 1.0.9
  • snack3 升为 3.2.62
  • hutool 升为 5.8.16
  • liteflow 升为 2.10.1

项目仓库:

  • gitee:https://gitee.com/noear/solon
  • github:https://github.com/noear/solon

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/7371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MLSkin 5.3 for delphi Crack

MLSkin 是Delphi下面的一款皮肤组件,是基于Delphi标准组件继承而来,扩展了很多实用的属性功能供开发者调用;在使用上和标准的VCL组件相差不大,但显示风格却大不一样,可以很轻松地实现像QQ皮肤那样的效果,想…

镜头光学指标介绍----清晰度SFR

目录 简介 常用单位 lp/mm(line-pairs/mm) Cycle / pixel LW/PH(line widths/ picture height) 转换关系 MTF MTF概念 MTF50,MTF50P SFR的计算方法 参考资料: 简介 在镜头选型或者对比中&…

【从零开始学习 UVM】10.2、UVM TLM —— UVM TLM Blocking Put Port

文章目录 UVM TLM Port Example1. 创建一个发送器类,其端口类型为 uvm_blocking_put_port2. 创建一个接收器类,实现 put 方法。3. 在更高层次上连接端口及其实现Put Port 阻塞行为任何组件都可以通过 TLM put port向另一个组件发送事务。接收组件应该定义 put port的实现。这…

【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程

💭 写在前面:本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写,该教材由Randal E. Bryant和David R. OHallaron 合著…

流量整形(GTS和LR)

Generic Traffic Shaping通用流量整形 通用流量整形(简称GTS)可以对不规则或不符合预定流量特性的流量进行整形,以保证网络上下游之间的带宽匹配,避免拥塞发生。 GTS与CAR一样,都采用了令牌桶技术来控制流量。GTS与CAR的主要区别在于:利用CAR进行报文流量控制时,…

蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)

文章目录零、吐槽一、关于自创模板,和自写模板库的问题二、关于 详解A/D、D/A、PCF8591 这篇文章一些小错误三、模板最终版本main.cds1302.conewire.honewire.ciic.hiic.c附、第十四届蓝桥杯单片机赛题零、吐槽 今年是矩阵键盘三个协议一起调用啊。真是一年比一年难…

免费CRM如何进行选择?

如今CRM领域成为炙手可热的赛道,很多CRM系统厂商甚至打出完全免费的口号,是否真的存在完全免费的crm系统?很多企业在免费使用过程中会出现被迫终止的问题,需要花费高价钱才能继续使用,那么,免费crm系统哪个…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话,对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型,具体什么版本不祥&#…

【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析

【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析 MiVOS模型将交互到掩码和掩码传播分离,从而实现更高的泛化性和更好的性能。单独训练的交互模块将用户交互转换为对象掩码,本博客将讲解S2M(用户交互产生分割图)模块的深度网…

【Vue框架】Vue绑定样式及案例之行内样式——对象绑定样式与数组控制样式(附带源码案例)

文章目录一、Vue样式绑定1.1 Vue绑定class样式1.2 Vue绑定行内样式1.2.1 对象控制绑定样式1.2.2 数组控制绑定样式1.3 Vue绑定样式案例(标题排他)1.4 v-if和v-show指令1.5 v-if实现选项卡案例1.6 购物车实例一、Vue样式绑定 1.1 Vue绑定class样式 Vue通过v-bind动态样式绑定。…

前端基础-ES6

前端基础-ES61.let&const2.解构表达式数组解构对象解构字符串扩展函数优化map、reducePromise异步编排模块化本文引用了尚硅谷谷粒商城的内容 参考文档:https://blog.csdn.net/weixin_44364444/article/details/126198957 1.let&const var 声明的变量往往…

网络安全行业现在好混吗,工资水平怎么样?

前段时间看到有人私信:网络安全行业现在好混吗,工资水平怎么样?今天在这里做个回答,不知你所说的“好混吗”指的是什么? 薪资高,待遇好?不加班,活儿少?不受气&#xff0…

Junit 5 单元测试框架

目录 1. Junit 5 的依赖 2. Junit - 注解 2.1 Test 2.2 BeforeEach 2.3 BeforeAll 2.4 AfterEach 2.5 AfterAll 3. Junit - 断言 3.1 assertEquals/ assertNotEquals 断言是否匹配 3.2 assertTrue / assertFalse 断言结果的真假 3.3 assertNull / assertNotNull 断言…

Matlab 一种计算植物面积密度的新方法(论文复现:凸包法)

文章目录 一、简介三、实现代码三、实现效果参考资料一、简介 该方法基于水平切片和森林冠层凸包来计算出植物面积密度(PAD),具体过程如下所述: 1、第一步是对整个点云进行切片。在每个水平切割( z = z i z = z_i z

【C++】用一棵红黑树同时封装出map和set

苦厄难夺凌云志,不死终有出头日。 文章目录一、封装第一层:仿函数取结点中的key关键码二、封装第二层:红黑树的普通迭代器1.map和set的表层迭代器实现2.底层红黑树中迭代器的实现三、封装第三层:1.set的迭代器(底层均…

2022年业绩逆势增长,“要强”蒙牛再创蒙牛

2022年是蒙牛“再造一个新蒙牛”五年计划的第二年,也是乳企赛道疫情以来最为艰难的一年,这一年里,不仅有疫情多点散发所带来的线下渠道不畅,也有原材料价格飙涨所导致的成本高企。 在这种形势下,蒙牛尽管遭遇多重困难…

数据分析之Pandas(2)

3.Pandas 文章目录3.Pandas3.3 Pandas进阶3.3.1 数据重塑和轴向旋转(1)层次化索引Series的层次化索引DataFrame的层次化索引层次化——电影数据示列(2)数据旋转3.3.2 数据分组、分组运算3.3.3 离散化处理3.3.4 合并数据集&#xf…

现代前端开发者的自我迷失,你还会前端基础知识吗?

通常来说,我认为情况并不算糟糕,熟练的手可以几乎做到一切。然而,最近我注意到一些事情改变了我对这个行业的看法。似乎在这些无尽的趋势、范式和新奇玩意中,我们忘记了前端开发的支柱(意思是忘记了基础知识&#xff0…

面向对象编程(基础)10:类的成员之三:构造器(Constructor)

我们new完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻烦了。我们能不能在new对象时,直接为当前对象的某个或所有成员变量直接赋值呢? 可以,Java给我们提供…

【蓝桥杯算法模板题--蓝桥题库Java】

PDF下载地址:点击即可 文章目录算法模板1 排序(ArrayList,sort)题目描述输入描述输出描述输入输出样例示例 1运行限制2 小明的彩灯(差分)输入输出样例示例 1运行限制3 绝世武功(二阶差分算法&am…
最新文章