不妨試試更快更小更靈活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());

推薦閱讀