輕量級的JAVA應用開發框架:YMP
YMP框架是什么?
YMP(yMatePlatform)開發框架是一套輕量級的JAVA應用開發框架,開發初衷只是想按自己的編碼習慣,盡量采用最簡單的方式實現我需要的東西,達到簡化工作任務、統一開發流程為目標,能夠減輕一點點的工作壓力,讓開發變成快樂的事!
在開發過程中,參考了很多優秀的開源項目,如:Hibernate、Struts、Struts2、iBatis、DBUtils、Spring JDBC、String MVC等等,它們都太優秀、太強大也太復雜了,但針對于我所參與的項目來說,有些特性基本無用武之地,反倒成了“累贅”,因此我決定冒天下之大不韙,去掉“累贅”重新造輪子,就這樣YMP誕生了!
知識需要共享,我們才能進步,開源才是技術發展的力量源泉,我尊重開源,熱愛分享,理解勞動為我們帶來的價值,個人的力量始終有限,希望大家能夠通過了解更多的開源技術,掌握更多的知識,讓我們一起交流心得!
YMP框架有哪些特性?
- 統一配置體系結構,為開發中所需配置文件提供統一的生命周期管理;
- 系統與業務的日志分離,按功能或模塊進行日志存儲并可采用多線程寫方式以降低I/O成本;
- 插件機制,支持模塊化開發與部署;
- MVC分層體系,配置簡單,可擴展,易維護,支持零配置,不依賴容器,多種視圖支持,支持事件及異常接口擴展并整合插件特性;
- 輕量級JDBC封裝,多數據源、單實體ORM封裝,支持MySQL、Oracle和SQL Server等數據庫,支持存儲過程調用和編碼方式定義復雜的組合查詢*;
- 支持方法、請求參數綁定與驗證,減少人工干預,靈活的驗證器擴展接口;
- 框架模塊化加載,支持自定義模塊,統一文件配置,簡單、靈活; </ul>
- 統一配置文件檢索、加載方式;
- 模塊間配置等資源共享:相同項目下各模塊可以共用項目級公共配置、類和jar包等資源文件;
- 配置文件類型可通過IConfigurationProvider進行擴展、支持緩存,避免重復加載;
- 配置文件可自動填充到實現IConfiguration接口的配置對象,支持Annotation注解方式聲明;
- 集成模塊的構建(編譯)與分發、服務的啟動與停止,以及清晰的資源文件分類結構可快速定位; </ul>
- DefaultLog4JLogger:標準日志記錄器;
- AsyncLog4JLogger:異步日志記錄器,每個日志記錄器均采用獨立線程進行日志內容輸出,避免日志輸出阻塞業務代碼執行; </ul>
- 支持控制器方法請求路由映射及攔截器、控制器的自動掃描、注冊;
- 支持自定義異常及事件處理;
- 支持插件;
- 標準MVC實現,結構清晰、配置簡單,完全基于Annotation注解方式配置;
- 支持零配置(Convention Model,無需編寫控制器代碼,直接匹配并執行視圖);
- WebMVC支持多種視圖技術,包括:HTML、JSP、JSON、Freemarker、Binary、HttpStatus、Redirect和Forward等;
- WebMVC支持REST風格URL模式;
- 支持請求參數與控制器方法綁定;
- 支持請求參數有效性驗證;
- 支持控制器方法的請求攔截; </ul>
- 封裝JDBC 低級API,結構簡單、便于開發、調試和維護;
- 支持數據的批量更新,支持數據庫存儲過程的操作,支持標準化的結果集處理,預編譯 SQL 語句處理;
- 支持單數據表CRUD等方便操作,無需編寫SQL 語句;
- 支持結果集與值對象的自動裝配,并可通過IResultSetHandler接口自定義裝配規則;
- 可動態配置數據源,支持通過JNDI 調用容器數據源及多數據源支持;
- 通過IDataSourceAdapter接口可自定義數據源、連接池配置;
- 支持常見數據庫(如:Oracle、MySQL 、SQL Server等)的數據分頁查詢;
- 支持DAO設計模式;
- 支持編碼方式自定義多表關聯組合查詢*;
- 支持JDBC事務嵌套; </ul>
YMP框架模塊功能介紹
配置體系模塊
配置體系模塊,是一套簡單的結構化開發模式,目的是讓開發流程統一和規范,提供模塊化開發和集成部署能力的解決方案;
配置體系結構按優先級由低到高劃分三層,即:全局->項目->模塊,其特性如下:
配置體系結構從開發角度解決了模塊化開發流程和規范的統一、資源文件的生命周期管理;從維護角度解決了模塊化集中式管理,將全部資源集成在整個體系中,其具備有效的資源重用和靈活的系統集成構建、部署和數據備份與遷移等特點;
更多內容參見:配置體系模塊使用詳解
日志模塊
基于Log4J開源日志框架實現,采用XML文件配置日志記錄器,對日志記錄器對象提供統一生命周期管理,開發過程可以在任意位置調用任日志記錄器輸出日志,實現系統與業務日志的分離;
框架目前提供了兩種日志記錄器擴展實現,分別是:
更多內容參見:日志模塊使用詳解
插件模塊
插件模塊的設計目標是為了在接口開發模式下,可以將任務劃分更細顆粒度,可以通過插件靈活變更接口實現;
由于插件采用獨立的ClassLoader類加載器來管理私有jar包、類、資源文件等,所以插件之間的調用依賴業務接口;
插件工廠類負責分析、加載和初始化,插件是單例的,即所有可裝載的插件在加載后被實例化并由插件工廠維護其生命周期;
更多內容參見:插件模塊使用詳解
MVC模塊
MVC模塊是一個基于模型、試圖和控制器的抽象框架層,在抽象框架基礎上分別面向Web應用開發(WebMVC)和面向獨立服務程序(ServerMVC)開發提供了擴展支持,使兩種應用場景均采用統一的開發模式,即通過簡單的配置調整,兩種場景的代碼可以通用,從而達到降低學習、開發的成本,其具備以下功能特征:
MVC模塊提供了、注冊和,并與插件模塊整合,
更多內容參見:MVC模塊使用詳解
持久化模塊
持久化模塊目前基于JDBC框架API進行輕量封裝,針對關系型數據庫(RDBMS)數據存取的一套簡單解決方案,主要關注數據存取的效率、易用性和透明,其具備以下功能特征:
更多內容參見:持久化模塊使用詳解
驗證模塊
驗證模塊是參數有效性驗證工具,對類方法的參數通過Annotation注解方式聲明其驗證規則,返回驗證結果,并支持I18N;
通過實現IValidator接口或繼承AbstractValidator類,可自定義驗證器并注冊到驗證模塊;
更多內容參見:驗證模塊使用詳解
模塊管理器
模塊管理器負責YMP框架各模塊的加載、初始化工作,模塊的加載順序、參數配置等均由ymp-conf.properties文件統一配置,請閱讀框架初始化配置文件詳細說明;
用戶可以通過實現IModule接口,開發自定義模塊,并將其添加到配置文件的模塊加載列表中即可;