概述


201612242132437937.png

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)組成,整體結構非常簡約、清晰,如圖所示:

201612242130392832.png框架核心(Core )

主要負責框架的初始化和模組的載入及其生命週期管理,功能包括:

類別物件管理器:提供套件類別的自動掃描以及Bean生命週期管理、依賴注入和方法攔截等特性;
  • 事件服務:透過事件註冊和廣播的方式觸發和監聽事件動作,並支援同步和非同步兩種模式執行事件佇列;
  • 模組:是YMP框架所有功能特性封裝的基礎形式,負責模組的生命週期管理;
  • 國際化資源管理器:提供統一的資源檔案載入、銷毀和內容讀取,支援自訂資源載入與語言變更的事件監聽;
  • 另外,提供了一組自訂的資料結構和框架中所需的各種工具類別;
  • ##設定體系(Configuration)
透過簡單的目錄結構實現在專案開發以及維護過程中,對配置等各種文件資源的統一管理,為模組化開發和部署提供靈活的、簡單有效的解決方案:
  • 規格模組化開發流程、統一資源檔案管理;
  • 具備有效的資源重複使用和靈活的系統整合建置、部署和資料備份與遷移等優勢;
  • 簡單的設定檔檢索、載入及管理模式;
  • 模組間資源共享,模組可以共用所屬項目的配置、類別和jar包等資源檔案;
  • 預設支援XML和Properties配置文件解析,可以透過IConfigurationProvider介面自訂檔案格式,支援緩存,避免重複載入;
  • 設定物件支援註解方式聲明,無需編碼即可自動載入並填入配置內容到類別物件;
  • 整合模組的建置與分發、服務的啟動與停止*,以及清晰的資源檔案分類結構可快速定位;
日誌(Log)

  • 基於開源日誌框架Log4J 2實現,提供對日誌記錄器物件的統一管理,可以在任意位置調用任意日誌記錄器輸出日誌,實現系統與業務日誌的分離,並針對apache-commons-logging日誌框架和slf4j日誌系統提供支援;
  • 持久化(Persistence)
  • JDBC
  • 針對關係型資料庫(RDBMS)資料存取的一套簡單解決方案,主要關注資料存取的效率、易用性和透明,其具備以下功能特徵:
  • 基於JDBC框架API進行輕量封裝,結構簡單、便於開發、偵錯和維護;
  • 優化批次資料更新、標準化結果集、預編譯SQL語句處理;
支援單一實體ORM操作,無需編寫SQL語句;
提供鷹架工具,快速產生資料實體類,支援鍊式呼叫;
支援透過記憶體註解自訂SQL語句或從設定檔載入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資源國際化;
  • 支援控制器方法與視圖快取;
  • 支援控制器參數轉義;
  • 支援外掛程式擴充;


#

One More Thing

YMP不僅提供便利的Web及其它Java專案的快速開發體驗,也將持續提供更多豐富的專案實務經驗。

有興趣的朋友兒們可以加入 官方QQ群480374360,一起交流學習,幫助YMP成長!

了解更多關於YMP框架的內容,請造訪官網:http://www.ymate.net/