框架說白了就是JAVA工作者多年以來總結出的一些開發標準。讓我們可以以成功的經驗模式來開發我們自已的系統,一般使用框架的好處是
·在好的框架下,開發者只需要寫一些必須的代碼;他們不需要直接接觸底層的API。 這一點很重要。
·經過良好設計的框架可以為程序提供清晰的結構并且提高程序的內聚性。好清晰的結構使得其他人可以更容易加入項目。
·一個容易使用的框架可以通過一些例子和文檔為用戶提供最佳實踐。
·采用成功的框架的代碼比自己的代碼容易測試
J2EE本身提供了一些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而這些框架一般在中小工程中我們都不會使用,會讓我們把大量的時間浪費在開發框架上。
而現在比較流行開源框架,主要是struts,hibernate,spring等
比如struts是在原有mvc基礎上實現在代碼分離等功能,非常好用。
而hibernate可以把我們的關系型數據庫轉換成我們在JAVA中的面像對像來使用。從而讓我們在開發時不需要直接寫SQL語句,比如database.getName();就可以直接把數據庫中的用戶名取出來。
Spring
J2EE框架被大規模地運用到項目中,而項目總要負責這些框架以及自己業務代碼的連接,使之真正融合到一起。Spring就是專注于這個問題的,它和Hibernate融合的很好。
這三種框架在一起并不沖突,所以現在最常用的框架就是
struts+hibernate+spring就像我們蓋房子一樣,先把框架搭好,我們在在上面寫代碼就很規范。
Struts框架介紹 :
Struts只是一個MVC框架(Framework),用于快速開發Java Web應用。Struts實現的重點在C(Controller),包括ActionServlet/RequestProcessor和我們定制的 Action,也為V(View)提供了一系列定制標簽(Custom Tag)。但Struts幾乎沒有涉及M(Model),所以Struts可以采用JAVA實現的任何形式的商業邏輯。
Spring是一個輕型容器(light-weight container),其核心是Bean工廠(Bean Factory),用以構造我們所需要的M(Model)。在此基礎之上,Spring提供了AOP(Aspect-Oriented Programming, 面向層面的編程)的實現,用它來提供非管理環境下申明方式的事務、安全等服務;對Bean工廠的擴展ApplicationContext更加方便我們實 現J2EE的應用;DAO/ORM的實現方便我們進行數據庫的開發;Web MVC和Spring Web提供了Java Web應用的框架或與其他流行的Web框架進行集成。
就是說可將兩者一起使用,達到將兩者自身的特點進行互補。
spring 框架介紹 :
它關注的領域是其他許多流行的Framework未曾關注的。Spring要提供的是一種管理你的業務對象的方法。
Spring既是全面的又是模塊化的。Spring有分層的體系結構,這意味著你能選擇僅僅使用它任何一個獨立的部分,而它的架構又是內部一致。 因此你能從你的學習中,得到最大的價值。例如,你可能選擇僅僅使用Spring來簡單化JDBC的使用,或用來管理所有的業務對象。
它的設計從一開始就是要幫助你編寫易于測試的代碼。Spring是使用測試驅動開發的工程的理想框架。
Spring不會給你的工程添加對其他的框架依賴。Spring也許稱得上是個一站式解決方案,提供了一個典型應用所需要的大部分基礎架構。它還涉及到了其他framework沒有考慮到的內容。
盡管它僅僅是一個從2003年2月才開始的開源項目,但Spring有深厚的歷史根基。
Spring架構上的好處
在我們進入細節之前,讓我們來看看Spring能夠給工程帶來的種種好處:
Spring能有效地組織你的中間層對象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力于解決剩下的問題。
Spring能消除在許多工程中常見的對Singleton的過多使用。根據我的經驗,這是一個很大的問題,它降低了系統的可測試性和面向對象的程度。
通過一種在不同應用程序和項目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經對某個類要尋找的是哪個 魔法般的屬性項或系統屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。 Inversion of Control的使用(在下面討論)幫助完成了這種簡化。
通過把對接口編程而不是對類編程的代價幾乎減少到沒有,Spring能夠促進養成好的編程習慣。
Spring被設計為讓使用它創建的應用盡可能少的依賴于他的APIs。在Spring應用中的大多數業務對象沒有依賴于Spring。
使用Spring構建的應用程序易于單元測試。
Spring能使EJB的使用成為一個實現選擇,而不是應用架構的必然選擇。你能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。
Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用于許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不通過EJB容器,如果你僅僅需要與單個數據庫打交道,甚至不需要一個JTA實現。
Spring為數據存取提供了一個一致的框架,不論是使用的是JDBC還是O/R mapping產品(如Hibernate)。