Spring的主要目的是使Java EE易用和促進(jìn)好編程習(xí)慣。
Spring 不重新開發(fā)已有的東西。因此,在Spring中你將發(fā)現(xiàn)沒有日志記錄的包,沒有連接池,沒有分布事務(wù)調(diào)度。這些均有開源項(xiàng)目提供(例如 Commons Logging 用來做所有的日志輸出,或Commons DBCP用來作數(shù)據(jù)連接池),或由你的應(yīng)用程序服務(wù)器提供。因?yàn)橥瑯拥牡脑颍覀儧]有提供O/R mapping層,對此,已有有好的解決辦法如Hibernate和JDO。
Spring的目標(biāo)是使已存在的技術(shù)更加易用。例如,盡管我們沒有底層事務(wù)協(xié)調(diào)處理,但我們提供了一個抽象層覆蓋了JTA或任何其他的事務(wù)策略。
Spring沒有直接和其他的開源項(xiàng)目競爭,除非我們感到我們能提供新的一些東西。例如,象許多開發(fā)人員,我們從來沒有為Struts高興過,并且感到在MVC web framework中還有改進(jìn)的余地。在某些領(lǐng)域,例如輕量級的 IoC容器和AOP框架,Spring有直接的競爭,但是在這些領(lǐng)域還沒有已經(jīng)較為流行的解決方案。(Spring在這些區(qū)域是開路先鋒。)
Spring也得益于內(nèi)在的一致性。
所有的開發(fā)者都在唱同樣的的贊歌,基礎(chǔ)想法依然是Expert One-on-One Java EE設(shè)計(jì)與開發(fā)的那些。
并且我們已經(jīng)能夠使用一些主要的概念,例如倒置控制,來處理多個領(lǐng)域。
Spring在應(yīng)用服務(wù)器之間是可移植的。
當(dāng)然保證可移植性總是一次挑戰(zhàn),但是我們避免任何特定平臺或非標(biāo)準(zhǔn)化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的應(yīng)用服務(wù)器上的用戶。
Spring的核心即是個IoC/DI的容器,它可以幫程序設(shè)計(jì)人員完成組件之間的依賴關(guān)系注入,使得組件之間的依賴達(dá)到最小,進(jìn)而提高組件的重用性,Spring是個低侵入性(invasive)的框架,Spring中的組件并不會意識到它正置身于Spring中,這使得組件可以輕易的從框架中脫離,而幾乎不用任何的修改,反過來說,組件也可以簡單的方式加入至框架中,使得組件甚至框架的整合變得容易。
Spring最為人重視的另一方面是支持AOP(Aspect-Oriented Programming),然而AOP框架只是Spring支持的一個子框架,說Spring框架是AOP框架并不是一件適當(dāng)?shù)拿枋,人們對于新奇?AOP關(guān)注映射至Spring上,使得人們對于Spring的關(guān)注集中在它的AOP框架上,雖然有所誤解,但也突顯了Spring的另一個令人關(guān)注的特色。
Spring也提供MVC Web框架的解決方案,但您也可以將自己所熟悉的MVC Web框架與Spring解合,像是Struts、Webwork等等,都可以與Spring整合而成為進(jìn)用于自己的解決方案。Spring也提供其它方面的整合,像是持久層的整合如JDBC、O/R Mapping工具(Hibernate、iBATIS)、事務(wù)處理等等,Spring作了對多方面整合的努力,故說Spring是個全方位的應(yīng)用程序框架。
Hibernate
Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了輕量級的對象封裝,使得Java程序員可以使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以在應(yīng)用EJB的Java EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化。它還可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱,也可以在Servlet/JSP的Web應(yīng)用中使用。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |