不妨试试更快更小更灵活Java开发框架Solon

@
目录

  • 概述
    • 定义
    • 性能
    • 架构
  • 实战
    • Solon Web示例
    • Solon Mybatis-Plus示例
    • Solon WebSocket示例
    • Solon Remoting RPC示例
    • Solon Cloud Nacos示例
概述定义
Solon 官网地址 https://solon.noear.org/
Solon GitHub源码地址 https://github.com/noear/solon
Solon for java,一个更现代感的,轻量级应用开发框架,崇尚克制、简洁、开放、生态设计理念 。最新版本为1.10.7
Solon从项目启动以来,参考过大量前人的作品 。尤其是 Spring Boot、jFinal、Javalin 和 Asp.Net,吸取了诸多优点,且避开很多繁重的设计 。历时多年 , 内核始终保持 0.1Mb 的身材,超高的跑分,良好而自由的使用体验 。
目前支持jdk8、jdk11、jdk17、jdk19四个大版本,开发定制方便 , 可通过组合不同的插件快速开发不同的需求,开发人员几乎可使用与SpringBoot相似的开发方式 。其Solon Cloud 为一系列分布式开发的接口标准和配置规范,相当于DDD模式里的防腐层概念,是 Solon 的微服务架构模式开发解决方案 。在开发使用上官方也提供其与SpringBoot、SpringCloud、Dubbo的详细区别,使用时查阅官方文档即可 。
性能Solon 根据官方提供数据,比传统的Java应用特别是Spring生态开发的应用启动快 5 ~ 10 倍 , qps 高 2~ 3 倍,运行时内存节省 1/3 ~ 1/2 , 打包可以缩到 1/2 ~ 1/10 。因此成为更现代感的应用开发框架,实现更快、更小、更少、更自由!
  • 快:Qps 可达10万之多
  • ?。耗诤?0.1Mb,最小 Web 完整开发单位 1Mb(相比Springboot项目包,小到可以乎略不计了)
  • 自由:代码操控自由 , 除了注解模式之外,还可以按需手动;框架选择自由:可以用 solon-web 这样的快速开发集成包 。也可以按项目需要选择不同的插件组装,比如:为非Solon项目添加solon.boot.jlhttp , 0.2Mb 即可让项目实现 http+mvc 支持 。

不妨试试更快更小更灵活Java开发框架Solon

文章插图
架构
  • 缘起统一的处理架构想法(俗称:三源合一):Http、Socket、WebSocket 。不同的通讯信号,进行统一架构处理 , 且小巧 。对于 Socket 和 WebSocket,在原 消息+监听 的模式之外增加了 上下文+处理 模式

不妨试试更快更小更灵活Java开发框架Solon

文章插图
  • 关于应用内在的启动过程(即:应用的生命周期):串行的处理过程(含四个事件扩展点 + 两个函数扩展点)

不妨试试更快更小更灵活Java开发框架Solon

文章插图
  • 请求的处理过程

不妨试试更快更小更灵活Java开发框架Solon

文章插图
  • Ioc & Aop 内部结构
    不妨试试更快更小更灵活Java开发框架Solon

    文章插图
  • 现有家簇成员图谱

不妨试试更快更小更灵活Java开发框架Solon

文章插图
实战Solon Web示例下载官方的helloworld示例 体验下Solon 轻量和快 。此外还可以下载官网提供丰富的配套示例:
项目地址说明solon-exampleshttps://gitee.com/noear/solon-examples配套"学习/科目学习"进行演示下载完解压后导入Idea中,是个标准的maven项目,pom文件引入solon的父依赖和核心依赖
<dependency><groupId>org.noear</groupId><artifactId>solon-web</artifactId></dependency>一个配置文件app.yml,一个启动类DemoApp,是不是和SpringBoot很相似,Solon 是一个容器型的应用开发框 , 在main方法中使用Solon.start启动 。app.yml内容如下:
server.port: 8080solon.app:name: demoappgroup: demo这里简单修改hello方法的返回结果如下,可以直接运行,也可以先通过mvn clean package -DskipTests打包后再使用java -jar demo.jar运行 。
不妨试试更快更小更灵活Java开发框架Solon

文章插图
几小行代码一个http接口就完成,启动速度非常快只用3ms,访问http://localhost:8080/hello?name=itxiaoshen 返回正确的结果
不妨试试更快更小更灵活Java开发框架Solon

文章插图
Solon Mybatis-Plus示例环境准备:创建MySQL数据库test、表appx,并插入测试数据
CREATE TABLE `appx` (`app_id` INT NOT NULL AUTO_INCREMENT COMMENT '应用ID',`app_key` VARCHAR(40) DEFAULT NULL COMMENT '应用访问KEY',`akey` VARCHAR(40) DEFAULT NULL COMMENT '(用于取代app id 形成的唯一key) //一般用于推广注册之类',`ugroup_id` INT DEFAULT '0' COMMENT '加入的用户组ID',`agroup_id` INT DEFAULT NULL COMMENT '加入的应用组ID',`name` VARCHAR(50) DEFAULT NULL COMMENT '应用名称',`note` VARCHAR(50) DEFAULT NULL COMMENT '应用备注',`ar_is_setting` INT NOT NULL DEFAULT '0' COMMENT '是否开放设置',`ar_is_examine` INT NOT NULL DEFAULT '0' COMMENT '是否审核中(0: 没审核 ;1:审核中)',`ar_examine_ver` INT NOT NULL DEFAULT '0' COMMENT '审核 中的版本号',`log_fulltime` DATETIME DEFAULT NULL,PRIMARY KEY (`app_id`),UNIQUE KEY `IX_akey` (`akey`) USING BTREE) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应用表';INSERT appx(app_key,akey,ugroup_id,agroup_id,NAME,note,ar_is_setting,ar_is_examine,ar_examine_ver,log_fulltime)VALUES('asdfghjk','aaaaabbbbb',100,1001,'抖音','时尚短视频',0,1,1,NOW());INSERT appx(app_key,akey,ugroup_id,agroup_id,NAME,note,ar_is_setting,ar_is_examine,ar_examine_ver,log_fulltime)VALUES('sdfsdf','ccccdddd',102,1002,'招行','储蓄',0,1,1,NOW());INSERT appx(app_key,akey,ugroup_id,agroup_id,NAME,note,ar_is_setting,ar_is_examine,ar_examine_ver,log_fulltime)VALUES('34543','eeeegggg',103,1003,'有道词典','翻译',0,1,1,NOW());

推荐阅读