本系列博文,將會一步一步介紹如何構建一個輕量級的web框架jbeer git地址:http://git.oschina.net/bieber/jbeer
在SSH/SSI充實着咱們每一個項目的開發過程當中,咱們所作的事情就是將他們一次組合在一塊兒,而後讓它們可以很好的工做。有時,你會以爲本身陷入了它們的陷阱,它們提供了很豐富的功能,可是咱們在項目開發過程當中,可以用到的多是它們的冰山一角。咱們爲了可以使用它們,可以確保它們很好的運行,可能須要依賴一大堆的第三方jar包,致使可能一個普通的CMS項目,都會有幾十兆,想一想,若是咱們只是經過Servlet+jdbc+jsp,這樣一個項目可能不到10兆就能夠解決。因而,就致使出,一個可以維持J2EE開發的基本功能,而又保持整個項目輕巧而且讓人感受很清爽。這就衍生出了輕量級web框架的誕生。 html
輕量級框架能夠說麻雀雖小,但五臟俱全。它保持了常規開發中須要的便捷功能,又保持了它的輕巧,同時也不失對整個框架的擴展性。通常輕量級框架都具有一下幾個特色: git
一、具有開發的核心功能 二、保持微內核以及高擴展 三、支持插件式開發 四、提供便捷的開發模式 五、讓開發有更多的時間作更有意義的事情
上面說了輕量級的框架具有的一些特色,那麼做爲輕量級web框架具有哪些應有的功能呢? web
1、支持restful以及參數自動綁定的MVC功能 spring
當你用了spring mvc,你確定不會再喜歡struts那一堆配置文件。因此一個輕量級的web框架,在MVC模塊採用簡單零配置的註解方式來綁定請求路徑和對應處理方法的關係。當你知道什麼是restful(其實我對它的理解也不是很深),那麼你就會以爲它加強了http的描述性,做爲一個輕量級的框架對這一個功能的支持,應該是必要的。當我第一次作web項目開發的時候,處處是servlet,而比這個更煩的就是每次須要從request中獲取請求的參數。我表示當初是什麼動力,讓我一直那樣寫下去了,表示當初的我是多麼的單純。當MVC解決了servlet遍地開花的問題,那麼也應該要解決參數的自動綁定,別再讓開發作這些沒有任何意義的事情上面。因此以上幾個功能都應該是輕量級web框架MVC模塊具有的。 數據庫
2、永遠不能拋棄的IOC以及AOP restful
我第一次聽到AOP和IOC是大二的時候,那個時候就據說AOP是如何如何強大,IOC如何如何便捷。這不得不讓咱們感謝一我的Rod Johnson,他提出了去EJB的思想,從而創造了Spring。Spring中兩大核心就是IOC和AOP,這個通常是畢業出去找工做比問的問題(固然是找J2EE的工做,Spring貌似還沒涉及到C吧)。IOC提供了一個實體類的管理工廠,從而讓咱們省去了不知多少個new,想要什麼實體類,找IOC吧。因此IOC這個好工具不能丟失。每次想到AOP,都會讓我它的用處太大了,有了它,什麼日誌記錄,性能監控,聲明式事務管理都可以很優雅的嵌入到你的具體業務中。它可以更加的豐富一個開發人員對軟件開發的認識和理解,當你發如今不影響現有業務邏輯代碼的時候,須要加入其餘的代碼執行,那麼AOP就能夠幫你實現。因此做爲一個輕量級的web框架,是不可或缺的。 mybatis
3、可讓咱們更加安心訪問數據庫的事務管理 mvc
Spring首次提出了聲明式事務管理的思想(其實我也不知道是否是第一次,至少我是第一次聽到spring可以這樣作到),它是在它AOP的思想之上進行了封裝,將訪問數據庫的事務進行抽象剝離,造成了聲明式事務。聲明式事務,讓咱們開發在寫訪問數據庫代碼時,能夠不用代碼實現事務的開始,事務的提交以及回滾,只須要把你的事務執行策略告訴事務管理,那麼它會自動幫你完成事務的開始,提交以及回滾。因此,支持聲明式的事務管理固然也是輕量級web框架不可缺乏的。 框架
4、更加簡單易用的Dao jsp
有時候我會以爲hibernate比較龐大,讓人感覺不到一點輕巧,好吧,或許它的目的就不是輕量級的。那麼如何讓Dao層可以更加的清爽呢?結合AR(activity recore)和mybatis,或許從它們身上可以找到清爽兩個字的含義。AR提供了便捷的AIP來操做數據庫記錄,Mybatis提供了很好的ORM功能。因此一個具有良好的數據庫訪問API和很好的ORM是輕量級框架dao模塊,應該考慮的問題,也是一個比較具備考驗的地方。
5、擴展性以及框架配置
輕量級框架因爲是集成了web開發的核心功能,那麼可能沒法知足一些特殊場景的開發需求,爲了可以讓框架可以支持各類場景的開發需求,那麼整個框架的擴展性在設計的時候須要考慮進去,能夠考慮框架是否支持插件開發。對於須要使用輕量級框架來進行項目開發而與,對該框架的配置應該精簡,採用約定優於配置的原則,從而下降了該框架的門檻,也方便了開發。
6、其餘邊邊角角
上面列舉出了幾個比較重要模塊,在整個web開發過程當中還須要其餘一些邊角料的協做,好比配置文檔的加載以及國際化,還有在開發過程當中,對代碼的單元測試。輕量級框架能夠考慮將單元測試嵌入到整個框架中,好比當在單元測試的時候,須要注入IOC中的某個實體,能夠經過框架自動從IOC中獲取對應的實體對象,相似這種需求,都會給開發人員帶來很大的幫助。從而可以真正實現讓開發去作更多有意義的事情,好比陪女朋友逛街…..
經過一坨的文字,把輕量級框架的概念以及幾個應該具有的功能點簡單的列舉了一下,那麼後面將會依據上面幾點,經過對JBEER框架來介紹如何來構架一個輕量級web框架。
輕量級框架的目的就是可讓咱們可以在這個夏天,喝着啤酒看着世界盃,可讓咱們能夠躺在沙灘,喝着啤酒,看着比基尼。可讓悶熱的夏天,變得更加清爽,讓咱們的開發生活變得更加清爽。