前言
Hasor 是一款基於 Java 語言的應用程式開發框架,它的核心設計目標是提供一個簡單、切必要的環境給開發者。開發者可以在此基礎上,通過 Hasor 強有力的粘合機制,構建出更加完善的應用場景。同時 Hasor 的各種內置插件也會幫助開發者進行快速開發。
特性
- 01. IoC/Aop編程模型,設計精巧,使用簡單
- 02. COC原則的最佳實踐,『零』配置文件
- 03. 微內核 + 擴展,基於內核已發展出 DB、Web、Restful 三大獨立的基礎框架
- 04. 真正的零開發,解析項目特有的自定義 Xml 配置
- 05. 支持模板化配置文件,程序打包之後一套配置通吃(日常、預發、線上)以及其它各種環境
- 06. 完備的 JDBC 操作接口,支持 Result -> Object 映射
- 07. 提供三種途徑控制事務,支持七種事務傳播屬性,標準的事務隔離級別
- 08. 支持多數據源、及多數據源下的事務控制(非JPA)
- 09. 內置事件機制,方便進行業務深度解耦,使業務邏輯更佳清晰
- 10. 支持 Web 類型項目開發,提供 restful 風格的 mvc 開發方式
- 11. 支持Form表單驗證、支持場景化驗證
- 12. 提供開放的模版渲染接口,支持各種類型的模版引擎
- 13. 提供豐富的工具箱,幫助您快速開發,有了它您甚至不需要 apache-commons
- 14. 支持log4j、logback等多種主流日誌框架
- 15. 體積小,無第三方依賴
4.1.0 發布內容
1、穩定性提升,core\web\db\dataql\tconsole 這些組件的單測覆蓋率大幅提升
2、hasor-core 開始全面兼容 jsr332 向標準靠齊
3、另外這次新增了 tConsole 和 DataQL 兩個子框架。
4、最後新增了 all-in-one 包,只需要依賴一個 jar 包。就可以實現 hasor 全系引入。
Commons
- 修復 ResourcesUtils 和 ScanClassPath,IO 文件句柄泄露問題。
- BasicFuture 的 callback,當沒有實現CancellFutureCallback的時候時候,會觸發failed。
- DataQL 中的 InterBeanMap 更名為 BeanMap 移到 commons 中。
- DB 中的 LinkedCaseInsensitiveMap 移到 commons 中。
Core
- 改造 hasor.core 全面支持 JSR-330。
- 全新的 SPI 能力。
- 單測覆蓋率達到 90%,修復若干潛在的問題。
- 主 namespace 『http://project.hasor.net/hasor/schema/main』 統一改為 『http://www.hasor.net/sechma/main』
- @InjectSettings 註解增加,命名空間支持。
- 默認配置文件名 hasor-config.xml 改為 hconfig.xml、不在提供環境參數屬性文件的機制。
- 其它大量接口上和內部執行機制的優化
Web
- 單測覆蓋率達到 90%,修復若干潛在的問題。
- hasor-env-properties 參數不在有效。
- @Produces 註解行為變化為不在影響使用哪個渲染器,而是負責指明使用什麼類型作為 response 的 ContentType。
- j2ee Servlet 會被轉換成 MappingTo 運行。j2ee Filter 會被轉換成 InvokerFilter 運行。
- 新增 OneConfig 匯總了FilterConfig, ServletConfig, InvokerConfig 三個接口的實現。
- ListenerPipeline 不在需要,取而代之使用 SPI 機制來替代。
- RenderInvoker 接口不在提供 lockViewType 相關方法。
- MimeType 接口在獲取 mimeType 信息時改為優先框架內的數據,如果框架內數據招不到在到 context 上查找。
DB
- mybatis 插件回歸 hasor-db
tConsole
- 重構,對於多行輸入支持用戶自定義命令結符號or字符串。重構後單測覆蓋率達到 90%。
- 支持 server 模式通過 Socket 埠運行
- 支持 基於標準輸入輸出流運行
- hasor-boot 能力被完完全全整合,因此 Hasor 將不在提供 hasor-boot。
DataQL
- 重構,放棄 javacc 更換成 antlr4。antlr4 更加智能。AST 模型仍然不變。重構後單測覆蓋率達到 90%。
- DataQL 大量新語法新特性。具體參看語法參考手冊。一些老的語法形式也不在支持,因此 DataQL 的語法和以前有明顯變化。
- 運行時內存模型:確定為 兩棧一堆
- 指令集系統:不在需要 ASM、ASA、ASO 三個指令,取而代之的是更嚴謹的指令集。
- SDK:函數包能力
- DataModel數據模型:增加 unwrap 方法,用來解開 DataModel 包裹
- 新增 Fragment 機制允許 DataQL 執行外部非 DataQL 語法的代碼片段。
- BeanContainer 改為 Finder,刪掉 UdfSource、UdfManager、UdfResult 不在需要這些概念。
- 原有 dql test case 語句文件統一轉移到 _old 目錄下面備用。
RSF
- rsf 使用 tconsole 的新接口
- 註冊中心暫不可用,下幾個版本會重新設計。
- rsf 的 InterAddress 支持域名傳入,但是toString 的時仍然會轉換為 ip。
其它
- 刪除 Hasor 默認提供的 JFinal 插件支持。理由是 JFinal 功能和 Hasor 體系重疊,同時 Hasor 的所有功能都是獨立。
- 整合 Hasor 及其容易因此沒有提供集成代碼的必要。
- 新增 Hasor-all 包。
發展狀況
Hasor起源於2012年,當時作為<新東方教育科技集團> 研發中心下各項目的基礎手腳架。
2015年7月3日,1.0.0版本發布。確立了「微內核+插件」發展策略。
2016年8月18日,2.4.3版本發布,同時開始孕育全新的子項目 RSF。由此 Hasor 開始向分布式領域發展。
2017年2月21日,RSF 被併入 Hasor 體系,同年 DataQL 問世。
2020年2月21日,4.0.7 最穩定的版本問世。這個版本中幾乎所有功的代碼都被重新 Review 並重新評估每個模塊的設計是否需要更新。
總結
這個框架也是最近剛剛發現的,搜集了一下相關信息分享給大家。查了一些資料,技術社區在16年之後基本不太活躍了,要使用的小夥伴要做好技術調研。Java 主流的框架還是基於Spring的SpringBoot/SpringCloud 體系。