springboot的轻量替代框架-Solon

news2024/11/14 21:03:13

Java之所以是广泛使用的编程语言,不仅仅因为其具有跨平台性、面向对象、可靠性,还有很重要的一点是强大的生态系统,spring家族的一系列框架,对Java的崛起有着不可忽视的作用。

学Java的不可能不知道Spring,今天给大家介绍一个号称springboot的轻量替代框架-Solon,这个框架还是国人开发的,真是一个单挑spring的男人。

认识Solon

Solon是一个参考了Spring Boot和Javalin的设计而创建的框架。它吸取了这两者的优点并避免了繁重的设计,使得它能够支持HTTP、WebSocket和Socket等三种通信信号接入。

Solon只需要2MB的大小就可以支撑完整的MVC开发,并且在启动方面只需要0.1秒的时间。相比之下,一个普通的Spring Boot MVC项目通常需要起步20MB以上的内存占用,并且启动时间要超过3秒,同时其QPS性能也较弱。

相比springboot,启动快 5 ~ 10 倍;qps 高 2~ 3 倍;运行时内存节省 1/3 ~ 1/2;打包可以缩到 1/2 ~ 1/10;同时支持 jdk8, jdk11, jdk17, jdk20, graalvm native。

  • 克制、简洁、高效、开放、生态
  • 支持 JDK8、JDK11、JDK17、JDK20
  • Http、WebSocket、Socket 三种信号统一的开发体验(俗称:三源合一)
  • 支持“注解”与“手动”两种模式,按需自由操控
  • Not Servlet,可以适配任何基础通讯框架(最小 0.3m 运行rpc架构)
  • 独特的 IOC/AOP 容器设计。不会因为插件变多而启动变很慢
  • 支持 Web、Data、Job、Remoting、Cloud 等任何开发场景
  • 兼顾 Handler + Context 和 Listener + Message 两种架构模式
  • 强调插件式扩展,可扩展可切换;适应不同的应用场景
  • 支持 GraalVm Native 打包
  • 允许业务插件“热插”、“热拔”、“热管理”

图片

上手Solon

web开发的模式和springboot基本一致,但是注解和springboot略有区别,具体区别可以看它的官方文档。

一个重要的区别是,Solon 不是基于 Servlet 的开发框架,虽然使用起来与 Springboot 相似的体验,但内部使用 Context 包装请求上下文(底层为:Context + Handler 架构)。

创建Maven项目,引入依赖

< parent >
 < groupId >org.noear< /groupId >
 < artifactId >solon-parent< /artifactId >
 < version >2.3.6< /version > 
< /parent >
​
< dependencies >
 < dependency >
   < groupId >org.noear< /groupId >
   < artifactId >solon-web< /artifactId >
 < /dependency >
< /dependencies >

编写启动类代码

@SolonMain
public class App{
 public static void main(String[] args){
   long start = System.currentTimeMillis();
   Solon.start(App.class, args);
   long end = System.currentTimeMillis();
   System.out.println("启动耗时:" + (end - start) + "ms");
 }
}

编写Controller

@Controller
public class DemoController {
​
 @Mapping("/hello")
 public String hello(String name){
   return "Hello " + name;
 }
​
}

运行,测试

图片

可以看出来,启动还是非常非常快的

图片

打包

图片

啊?只有4kb?

有点儿惊人,为此,我专门去新建了个springboot项目,也是简单的一个接口,打包

图片

好吧,这个项目也是4k,看来太简单的项目看不出来区别。等以后写新项目玩儿的时候再试试。

顺便测试了一下启动时间

图片

启动时间确实还是 Solon 更快!

小结

再来看看Solon的官方文档,文档写的很详细,功能很齐全,Solon的生态虽然没有spring那么强大,但小型项目已经完全可以胜任。

感兴趣的小伙伴儿们快快用起来吧,对于自己的项目很适合,毕竟自己的服务器内存和空间比较小,同样的项目占用更小的空间和内存还是很香的!

如若转载,请注明出处:开源字节   https://sourcebyte.vip/article/380.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品致差分探头和泰克差分探头的优势和特点分析

品致差分探头和泰克差分探头各有其独特的优势和特点&#xff0c;选择哪个更好主要取决于具体的应用场景、测试需求以及预算等因素。以下是对两个品牌差分探头的详细比较&#xff1a; 品致差分探头优势与特点&#xff1a; 高精度测量&#xff1a;品致差分探头具有高精度的测量…

docker(一):Develop faster. Run anywhere.

前言 在进行微服务部署时&#xff0c;首先需要进行部署环境的搭建。目前&#xff0c;Docker 已经成为了微服务部署的主流解决方案之一。Docker 可以帮助我们更快地打包、测试以及部署应用程序&#xff0c;从而缩短从编写到部署运行代码的周期。 在本文中&#xff0c;我们将对…

ChatGPT的高级语音功能“Her”终于上线啦!!

ChatGPT版“Her”突然开放&#xff0c;第一批体验报告来了&#xff01;用户们已经疯狂 刚刚&#xff0c;万众期待的GPT-4o语音功能&#xff0c;也就是被称为“Her”的功能&#xff0c;终于开始向用户陆续开放&#xff01; OpenAI官方推特表示&#xff0c;选中的Alpha用户们将在…

快速部署私有化大模型 毕昇(使用docker-compose方式)

docker安装 1. # Linux系统安装docker&#xff0c;以CentOS/RHEL为例&#xff0c;其他操作系统请参考docker官方安装方法 # 如果已经安装过docker 期望重装&#xff0c;先卸载 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \d…

【Vue】权限控制

权限管理 分类&#xff1a; 页面权限功能(按钮)权限接口权限 vue3-element-admin 的实现方案 一般我们在业务中将 路由可以分为两种&#xff0c;constantRoutes 和 asyncRoutes。 constantRoutes&#xff1a; 代表那些不需要动态判断权限的路由&#xff0c;如登录页、404(或…

机器学习算法——常规算法,在同的业务场景也需要使用不同的算法(二)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

新兴材料中载流子迁移率的霍尔效应测量

这篇文章是发表在《自然电子学》&#xff08;Nature Electronics&#xff09;2024年7月刊上的一篇评论文章&#xff0c;标题为“Reporting Hall effect measurements of charge carrier mobility in emerging materials”&#xff0c;作者是Vladimir Bruevich和Vitaly Podzorov…

数据仓库及数仓架构概述

往期推荐 大数据HBase图文简介-CSDN博客 数仓常见名词解析和名词之间的关系-CSDN博客 目录 0. 前言 0.1 浅谈维度建模 0.2 数据分析模型 1. 何为数据仓库 1.1 为什么不直接用业务平台的数据而要建设数仓&#xff1f; 1.2 数据仓库特征 1.3 数据仓库和数据库区别 1.4 以…

LLM 各种技巧| Prompt Engineering 大总结|指南

LLM 各种技巧| Prompt Engineering 大总结|指南 截止至今&#xff0c;关于LLM 的优化与技巧层出不穷&#xff0c;几乎每个月都有新的技术和方法论被提出&#xff0c;因此本篇主要是要介绍在各种不同情境下&#xff0c;LLM 的各种Prompt Engineering 技巧&#xff0c;每篇都有附…

数据结构经典测试题5

1. int main() { char arr[2][4]; strcpy (arr[0],"you"); strcpy (arr[1],"me"); arr[0][3]&; printf("%s \n",arr); return 0; }上述代码输出结果是什么呢&#xff1f; A: you&me B: you C: me D: err 答案为A 因为arr是一个2行4列…

使用AWS CDK构建生产级VPC基础设施指南

简介 虽然有很多关于AWS的信息&#xff0c;但实际如何将这些服务投入生产使用&#xff0c;还是需要自己思考。本文将介绍我们是如何思考并实施这些工作的。 目前有很多AWS环境构建的方法&#xff0c;但在这里我们将使用AWS CDK进行说明。 ※ 本文不会涉及CDK的基本操作方法或…

Java每日一练,技术成长不间断

目录 题目1.下列关于继承的哪项叙述是正确的&#xff1f;2.Java的跨平台特性是指它的源代码可以在多个平台运行。&#xff08;&#xff09;3.以下 _____ 不是 Object 类的方法4.以下代码&#xff1a;5.下面哪个流类不属于面向字符的流&#xff08;&#xff09;总结 题目 选自牛…

AI系统测试方法|变异测试的流程及优化技术

变异测试是AI系统测试中较为常见的一种测试方法。通过引入人工制造的缺陷来评估系统的健壮性。在AI系统测试实践中&#xff0c;变异测试解决了对测试套件进行有效性和充分性评估的难题。本文将重点探讨变异测试在AI系统测试中的执行流程&#xff0c;呈现一个完整的测试框架&…

Apple intelligence 正式开启测试!第一波文本工具测试体验来啦!

Apple Intelligence 开启测试了&#xff01;苹果带着它的人工智能走进现实了&#xff01; 但是&#xff0c;坏消息是&#xff0c;目前Apple Intelligence仅支持美国地区使用美英语言的开发者账户使用&#xff0c;国行的小伙伴不要急着更新了。 本次测试内容为WWDC2024预告中公布…

PTA 6-2 多项式求值

6-2 多项式求值&#xff08;15分&#xff09; 本题要求实现一个函数&#xff0c;计算阶数为n&#xff0c;系数为a[0] ... a[n]的多项式 在x点的值。 函数接口定义&#xff1a; double f( int n, double a[], double x ); 其中n是多项式的阶数&#xff0c;a[]中存储系数&…

【Qt】QWidget的windowOpacity属性 cursor属性 font属性

一.windowOpacity属性 1.概念&#xff1a; windowOpacity属性是Qt中QWindow类的一个属性。它用于设置窗口的不透明度&#xff08;透明度&#xff09;。 窗口的不透明度值范围是0.0到1.0之间&#xff0c;其中0.0表示完全透明&#xff0c;1.0表示完全不透明。默认情况下&#…

Python科研数据可视化教程

原文链接&#xff1a;Python科研数据可视化教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247609609&idx4&sn8629ee10544f43b46993694d929843d0&chksmfa826ceecdf5e5f8ca4fbc72104c3488d5c53c0735f41f393c9a494aceddf2b93c8eb5622813&token214…

部署一个nodejs项目+配置server

1.jdk环境 tomcat服务器需要jdk环境 版本对应 ​ tomcat9>jdk1.8 ​ tomcat10>jdk17 配置系统变量JAVA_HOME 2.nginx平滑升级&#xff0c;不停服务升级nginx服务器&#xff0c;1.26.1升级到1.27.0 3.负载均衡&#xff0c;使用nginx管理后端服务器&#xff0c;…

基础复习(IO流)

1.File类 创建对象 File f1 new File("D:/resource/ab.txt"); File f2 new File("D:\\resource\\abc.txt"); 基础方法 创建与删除方法 1、public boolean createNewFile()&#xff1a;创建一个新文件&#xff08;文件内容为空&#xff09;&#xff0c;…

区块链技术在智能城市中的创新应用探索

随着全球城市化进程的加速和信息技术的快速发展&#xff0c;智能城市成为了未来城市发展的重要方向。在智能城市建设中&#xff0c;区块链技术作为一种去中心化、安全和透明的分布式账本技术&#xff0c;正逐渐展现出其在优化城市管理、提升公共服务和增强城市安全性方面的潜力…