0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

springboot的轻量替代框架-Solon

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-09-30 10:55 次阅读

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生态架构图

官网:https://solon.noear.org/

项目地址:https://gitee.com/noear/solon

上手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那么强大,但小型项目已经完全可以胜任。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102983
  • 开发
    +关注

    关注

    0

    文章

    342

    浏览量

    40601
  • 框架
    +关注

    关注

    0

    文章

    297

    浏览量

    17040
  • SpringBoot
    +关注

    关注

    0

    文章

    172

    浏览量

    105
收藏 人收藏

    评论

    相关推荐

    SpringBoot知识总结

    SpringBoot干货学习总结
    发表于 08-01 10:40

    mybatis支持数据库兼容的方案

    一个的方案, 令mybatis支持数据库兼容
    发表于 04-09 17:44

    一文解析SpringBoot2整合SSM框架

    SpringBoot2整合SSM框架详解
    发表于 06-09 16:43

    怎么学习SpringBoot

    SpringBoot学习之路(X5)- 整合JPA
    发表于 06-10 14:52

    【入门】1 升级应用框架固件

    本帖最后由 jf_39160458 于 2021-5-21 16:04 编辑 首次拿到开发板后,开发板可能内置不是应用框架的固件,此时需要我们自己刷机。刷机流程如下:应用框架
    发表于 05-21 15:51

    怎样去使用springboot

    怎样去使用springboot呢?学习springboot需要懂得哪些?
    发表于 10-25 07:13

    Springboot整合netty框架实现终端、通讯板子(单片机)TCP/UDP通信案例

    如何springboot和netty案例的源代码一个springboot整合netty框架的开发小案例,实现服务端与单片机终端实时通信的通讯架构案例。物联网通信给板子下发指令案例附带源码及整合流程步骤
    发表于 12-29 18:55 19次下载
    <b class='flag-5'>Springboot</b>整合netty<b class='flag-5'>框架</b>实现终端、通讯板子(单片机)TCP/UDP通信案例

    为什么建议你替换掉SpringBoot框架中的Tomcat?

    SpringBoot框架中,我们使用最多的是Tomcat,这是SpringBoot默认的容器技术,而且是内嵌式的Tomcat。
    的头像 发表于 01-07 10:26 739次阅读

    Web框架替代方案分享(上)

    上周,我们从框架试图解决哪些核心问题的角度出发,考察了使用框架的不同好处和代价,重点放在声明性编程、数据绑定、反应性、列表和条件。今天,我们来看看能否在 Web 平台上找到替代方案。
    的头像 发表于 03-20 14:51 326次阅读

    Web框架替代方案分享(中)

    上周,我们从框架试图解决哪些核心问题的角度出发,考察了使用框架的不同好处和代价,重点放在声明性编程、数据绑定、反应性、列表和条件。今天,我们来看看能否在 Web 平台上找到替代方案。
    的头像 发表于 03-20 14:51 361次阅读

    Web框架替代方案分享(下)

    上周,我们从框架试图解决哪些核心问题的角度出发,考察了使用框架的不同好处和代价,重点放在声明性编程、数据绑定、反应性、列表和条件。今天,我们来看看能否在 Web 平台上找到替代方案。
    的头像 发表于 03-20 14:51 370次阅读

    什么是 SpringBoot

    本文从为什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里开始入手,逐步分析了 `SpringBoot` 自动装配的原理,最后手写了一个简单的 `start` 组件,通过实战来体会了 `
    的头像 发表于 04-07 11:28 1008次阅读
    什么是 <b class='flag-5'>SpringBoot</b>?

    SpringBoot 连接ElasticSearch的使用方式

    在上篇 ElasticSearch 文章中,我们详细的介绍了 ElasticSearch 的各种 api 使用。 实际的项目开发过程中,我们通常基于某些主流框架平台进行技术开发,比如
    的头像 发表于 10-09 10:35 420次阅读

    Quarkus是SpringBoot替代品吗?

    SpringBoot框架不用多介绍,Java程序员想必都知道。相对来说熟悉Quarkus的人可能会少一些。Quarkus首页放出的标语:超音速亚原子的Java(Supersonic Subatomic Java)。
    的头像 发表于 11-10 10:01 364次阅读
    Quarkus是<b class='flag-5'>SpringBoot</b>的<b class='flag-5'>替代</b>品吗?

    javaweb和springboot能一起用吗

    JavaWeb 和 SpringBoot 是两种针对 Java 程序开发的框架,它们可以在一起使用。在本文中,我将详细介绍 JavaWeb 和 SpringBoot 的关系,并探讨如何结合使用这两个
    的头像 发表于 11-16 10:54 819次阅读