企業模塊化開發Java框架:Hasor
Hasor是一款開源框架。它是為了解決企業模塊化開發中復雜性而創建的。Hasor遵循簡單的依賴、單一職責,在開發多模塊企業項目中更加有調理。然而Hasor的用途不僅僅限于多模塊項目開發。從簡單性、松耦合性的角度而言,任何Java應用都可以從中受益。Hasor與 Struts,Hibernate等單層框架不同,它可以提供一個以統一、高效的、友好的方式構造整個應用程序。并且可以將這些單層框架建立起一個連貫的體系,可以說Hasor是一個搭建開發環境的框架。這一點與Spring比較相似,您可以理解Hasor可以作為Spring之外的一種選擇。
特點:
- 清晰:在Hasor體系中每一個模塊都被封裝到一個jar或者classpath路徑中。
(您可以將多個模塊的代碼放到一個java項目中,提供一組模塊) - 簡單:基于注解和接口的模塊定義,除此之不外需要任何其他元素;在解析Xml配置文件時Hasor采用了一種統一的方式進行處理,這使得開發人員幾乎不需要編寫任何Xml解析器解析自定義Xml。如果Hasor提供的模塊不適合項目,你可以很便捷的定義新模塊替換掉它。
- 容器:Hasor包含并管理每個模塊對象的配置和生命周期,這使得它成為一種容器。不光如此Hasor還提供了工作空間接口,工作空間類似于軟件的HOME(諸如:JAVA_HOME、Eclipse WorkSpace、M2_HOME)工作空間的提供為項目的資源管理提供了有效的保障。
- 輕量:無論從大小還是開銷而言Hasor都是輕量的。Hasor基于Guice3.0作為Ioc/Aop核心支持,這使得Hasor的運行效率具備明顯的競爭優勢;同時Hasor的編譯結果僅有幾百K,即使將其依賴的所有JAR包都加到一起也不過1MB。
- 友好:Hasor的所有功能僅在幾個核心API接口上實現,正因為這樣基于Hasor開發項目變得簡單輕松。
- 兼容:對Web情況下進行了特殊制定,在開發Web項目時候可以得到更加友好的API支持。由于Hasor僅僅是一個輕量化容器,這又使得它可以很方便的和任何框架整合到一起。
適用場景
- 如果你還在苦思如何管理軟件開發環境中的各個模塊,那么可以嘗試使用Hasor。
- 當您的項目中存在千奇百怪的各種小工具時,Hasor可以有效的幫您管理這些工具,并且可以將這些工具轉換為您項目的基礎服務。
- 如果您還再為管理項目運行時產生的各種資源文件而頭疼的話Hasor提供的工作空間可以幫助你解決問題。
- 利用Hasor提供的模塊,可以快捷的搭建一個全新的開發框架。除了SSH或Spring之外Hasor成為又一個可選擇的技術方案。
好處
- Hasor采用Guice3.0作為其DI支持,這使得在用Hasor在開發Aop/Ioc的運行效率上比Spring有很大的改進。同時Hasor有著一個類似Spring的BeanFactory接口,用來提供相似功能。
(Hasor的這種設計并不是為了兼容Spring,而是因為像BeanFactory這樣的接口確實很重要。) - 配置文件方面:Hasor強化注解化開發,把配置文件徹底留給真正需要的地方。同時Hasor按照配置文件作用對其進行了進一步分類,使開發、測試、部署不同的環節之間對置文件的關注大大清晰化、明確化、單一化。不光如此Hasor還提供了對配置文件修改的動態檢測,并且通過監聽器可以讓應用程序在第一時間將更新的配置文件載入到正在運行的項目中使它生效。而這一切都不需要重啟。
- 低侵入式設計,代碼污染極低。
- Hasor不要求應用程序完全依賴于Hasor,開發者可以自由的選用Hasor的部分或全部模塊,甚至開發者可以動手開發自己的模塊。
原則
簡單、清晰、可靠、方便、快捷,可以說是Hasor在設計所有模塊時的目標。Hasor從現在到未來都會遵循下面這些原則。
- 用最簡的實現提供最有用的功能,不做過度設計。
- 模塊職責單一化、簡單化。不做“全能模塊”。
- 盡量在為開發者提供一個友好、簡單的API。
模塊
Hasor目前是由9個明確定義的模塊組成,您可以根據需要選配這些模塊作為您開發環境的功能。
1. org.hasor.core
核心模塊,hasor-core模塊包括了:模塊生命周期管理、Ioc/Aop支持、事件機制、Xml配置文件支持、工作空間、環境變量操作。
2. org.hasor.servlet
hasor-servlet模塊的定位是提供基本的J2EE開發組建,其中包括了注解定義(HttpServlet、Filter、 SessionListener)、以及一個注解化的并且支持restful風格的MVC控制層框架,除此之外還提供了一個請求響應編碼過濾器和一個資源裝載器。這個資源裝載器可以方便的處理位于(classpath、zip、filepath)下的資源請求。
3. org.hasor.icache
該模塊提供了一種統一的Cache接口用來隔離應用程序和具體Cache提供商的耦合關系,開發者可以通過在方法上標注@NeedCache注解來緩存方法執行結果。該注解還可以用來設置緩存服務提供者和緩存時間等策略配置。
4. org.hasor.security
一個通用的權限控制模塊。hasor-security的設計中把權限系統看作(認證,授權,控制)三個基本組件。hasor-security模塊只關注控制部分的問題。
- 認證:負責確定登陸用戶的身份是否合法,通過實現SecurityAuth接口來連接項目的認證體系。SecurityAuth接口的實現也十分簡單,只需要實現兩個用戶獲取方法返回一個用戶對象即可。
- 授權:決定了被認證的用戶具備哪些權限,通過實現SecurityAccess接口來獲取被認證用戶的權限集合。
- 控制:依據用戶所具備的權限限制對資源訪問。
由于hasor-security本身并不包含任何權限模型或者授權模型,所以它可以通過認證和授權與任何項目的權限模型相融合。無論你是基于用戶角色權限,或是域用戶認證,哪怕最復雜的RBAC模型。hasor-security都可以很好的與其配合。不光如此,它還支持:用戶多身份登陸、臨時加減用戶權限、來賓用戶,以及多用戶系統、多授權系統下權限控制。通過同步數據緩存還可以實現單點登陸(SSO)。
5. org.hasor.view
hasor-view是一個展示層模塊。它采用最新的Freemarker 2.3.19作為模板引擎,同時封裝了Freemarker的相關接口。Tag接口是對Freemarker自定義標簽實現的一種封裝,它更加明確了標簽的生命周期。通過在任意方法上標注@FmMethod注解可以方便的定義Freemarker自定義函數。不光如此在Freemarker的配置上 hasor-view模塊也提供了更為強大的支持。
decorate是hasor-view模塊提供的另外一個組建。它可以用來攔截response響應流,并且允許開發者重新輸出響應數據。用過SiteMesh的朋友對它的工作原理不會陌生。hasor-view通過該組建提供了頁面裝飾器。
6. org.hasor.ds
hasor-ds是一個為應用程序提供多數據源支持的模塊。
7. org.hasor.remote
遠程服務調用、Services共享、RMI、以及類似DWR的功能
8. org.hasor.updown
負責處理上傳下載需求的模塊,使用它可以按照需要配置上傳點和下載點。
9. org.hasor.ui
服務端UI框架。