框架特性
YMP 是一個非常簡單、易用的一套輕量級JAVA套用開發框架,設計原則主要側重於簡化工作任務、規範開發流程、提高開發效率,讓開發工作像搭積木一樣輕鬆是我們一直不懈努力的目標!
主要技術特點
•採用組件化、模組化打包方式,可按需裝配,靈活可擴展;
•採用微核心實現Autoscan、AOP、IoC、Event等,涵蓋SSH框架中絕大部分核心功能;
•統一配置體系結構,感受不一樣的檔案資源配置及管理模式;
•整合多種日誌系統(log4j、jcl、slf4j)、日誌檔案可分離存儲;
•輕量級持久化層封裝,針對RDBMS(MySQL、SQLServer、Oracle等)和NoSQL(MongoDB、Redis等)提供支持;
•完善的外掛程式機制,助力於更細顆粒度的業務拆分;
•獨特的獨立服務開發體驗;
•功能強大的驗證框架,完全基於Java註解,易於使用和擴展;
•靈活的快取服務,支持EhCache、Redis和多級快取(MultiLevel)技術;
•配置簡單的MVC架構,強大且易於維護和擴展,支持RESTful風格,支持JSP、HTML、Binary、Freemarker、Velocity等多種視圖技術;
模組及功能
YMP 框架主要是由框架核心(Core)和若干模組(Modules)組成,整體結構非常簡約、清晰。
框架核心(Core)
主要負責框架的初始化和模組的載入及其生命周期管理,功能包括:
•類對象管理器:提供包類的自動掃描以及Bean生命周期管理、依賴注入和方法攔截等特性;
•事件服務:通過事件註冊和廣播的方式觸發和監聽事件動作,並支持同步和異步兩種模式執行事件佇列;
•模組:是YMP框架所有功能特性封裝的基礎形式,負責模組的生命周期管理;
•國際化資源管理器:提供統一的資源檔案載入、銷毀和內容讀取,支持自定義資源載入和語言變化的事件監聽;
•另外,提供了一組自定義的數據結構和框架中需要的各種工具類;
配置體系(Configuration)
通過簡單的目錄結構實現在項目開發以及維護過程中,對配置等各種檔案資源的統一管理,為模組化開發和部署提供靈活的、簡單有效的解決方案:
•規範模組化開發流程、統一資源檔案管理;
•具備有效的資源重用和靈活的系統集成構建、部署和數據備份與遷移等優勢;
•簡單的配置檔案檢索、載入及管理模式;
•模組間資源共享,模組可以共用所屬項目的配置、類和jar包等資源檔案;
•默認支持XML和Properties配置檔案解析,可以通過IConfigurationProvider接口自定義檔案格式,支持快取,避免重複載入;
•配置對象支持註解方式聲明,無需編碼即可自動載入並填充配置內容到類對象;
•集成模組的構建與分發、服務的啟動與停止*,以及清晰的資源檔案分類結構可快速定位;
日誌(Log)
基於開源日誌框架Log4J 2實現,提供對日誌記錄器對象的統一管理,可以在任意位置調用任意日誌記錄器輸出日誌,實現系統與業務日誌的分離,並針對apache-commons-logging日誌框架和slf4j日誌系統提供支持;
持久化(Persistence)
JDBC
針對關係型資料庫(RDBMS)數據存取的一套簡單解決方案,主要關注數據存取的效率、易用性和透明,其具備以下功能特徵:
•基於JDBC框架API進行輕量封裝,結構簡單、便於開發、調試和維護;
•最佳化批量數據更新、標準化結果集、預編譯SQL語句處理;
•支持單實體ORM操作,無需編寫SQL語句;
•提供腳手架工具,快速生成數據實體類,支持鏈式調用;
•支持結果集與值對象的自動裝配,支持自定義裝配規則;
•支持多數據源,默認支持C3P0、DBCP、JNDI連線池配置,支持數據源擴展;
•支持多種資料庫(如:Oracle、MySQL、SQLServer等);
•支持面向對象的資料庫查詢封裝,有助於減少或降低程式編譯期錯誤;
•支持資料庫事務嵌套;
•支持資料庫存儲過程*;
MongoDB
針對MongoDB的數據存取操作的特點,以JDBC模組的設計思想進行簡單封裝,採用會話機制,支持多數據源配置和實體操作、基於對象查詢、MapReduce、GridFS、聚合及函式表達式集成等,仍需進一步完善改進,文檔整理中,敬請期待...
Redis
基於Jedis驅動封裝,採用會話機制,支持多數據源及連線池配置,仍需進一步完善改進,文檔整理中,敬請期待...
外掛程式(Plugin)
採用獨立的ClassLoader類載入器來管理私有JAR包、類、資源檔案等,設計目標是在接口開發模式下,將需求進行更細顆粒度拆分,從而達到一個理想化可重用代碼的封裝形態;
每個外掛程式都是封閉的世界,外掛程式與外界之間溝通的唯一方法是通過業務接口調用,管理這些外掛程式的容器被稱之為外掛程式工廠,負責外掛程式的分析、載入和初始化,以及外掛程式的生命周期管理,外掛程式模組支持創建多個外掛程式工廠實例,工廠對象之間完全獨立,無任何依賴關係;
服務(Serv)
一套基於NIO實現的通訊服務框架,提供TCP、UDP協定的客戶端與服務端封裝,靈活的訊息監聽與訊息內容編/解碼,簡約的配置使二次開發更加便捷;
同時默認提供斷線重連、鏈路維護(心跳)等服務支持,您只需了解業務即可輕鬆完成開發工作。
驗證(Validation)
服務端參數有效性驗證工具,採用註解聲明方式配置驗證規則,更簡單、更直觀、更友好,支持方法參數和類成員屬性驗證,支持驗證結果國際化I18N資源綁定,支持自定義驗證器,支持多種驗證模式;
快取(Cache)
以EhCache作為默認JVM進程內快取服務,通過整合外部Redis服務實現多級快取(MultiLevel)的輕量級快取框架,並與YMP框架深度集成(支持針對類方法的快取,可以根據方法參數值進行快取),靈活的配置、易於使用和擴展;
WebMVC框架
WebMVC模組在YMP框架中是除了JDBC模組以外的另一個非常重要的模組,集成了YMP框架的諸多特性,在功能結構的設計和使用方法上依然保持一貫的簡單風格,同時也繼承了主流MVC框架的基因,對於了解和熟悉SSH等框架技術的開發人員來說,上手極其容易,毫無學習成本。
其主要功能特性如下:
•標準MVC實現,結構清晰,完全基於註解方式配置簡單;
•支持約定模式,無需編寫控制器代碼,直接匹配並執行視圖;
•支持多種視圖技術(JSP、Freemarker、Velocity、Text、HTML、JSON、Binary、Forward、Redirect、HttpStatus等);
•支持RESTful模式及URL風格;
•支持請求參數與控制器方法參數的自動綁定;
•支持參數有效性驗證;
•支持控制器方法的攔截;
•支持註解配置控制器請求路由映射;
•支持自動掃描控制器類並註冊;
•支持事件和異常的自定義處理;
•支持I18N資源國際化;
•支持控制器方法和視圖快取;
•支持控制器參數轉義;
•支持外掛程式擴展;