Spring是java平臺(tái)上的一個(gè)開源應(yīng)用框架。它的第一個(gè)版本是由Rod Johnson寫出來的。Rod在他的Expert One-On-One Java EE Design and Development(Java企業(yè)應(yīng)用設(shè)計(jì)與開發(fā)的專家一對(duì)一)一書中首次發(fā)布了這個(gè)框架。該框架也可以移植到.NET的環(huán)境下
Spring的框架首次在2003年6月的Apache 2.0的使用許可中發(fā)布。第一個(gè)具有里程碑意義的版本是2004年3月發(fā)布的1.0。2004年9月和2005年3月先后又有重要的版本面世。
Spring框架本身并沒有強(qiáng)制實(shí)行任何特別的編程模式。在Java社區(qū)里,Spring作為EJB模型之外的另外一個(gè)選擇甚至是替代品而廣為流行。從設(shè)計(jì)上看,Spring給予了Java程序員許多的自由度,但同時(shí)對(duì)業(yè)界常見的問題也提供了良好的文檔和易于使用的方法。
Spring框架的核心功能在任何Java應(yīng)用中都是適用的。在基于Java企業(yè)平臺(tái)上的web應(yīng)用中,大量的拓展和改進(jìn)得以形成。為此,Spring獲得了廣泛的歡迎,并被許多公司認(rèn)可為具有戰(zhàn)略意義的重要框架。
1. Spring框架的歷史
Spring框架最開始的部分是由Rod Johnson于2000年為倫敦的金融界提供獨(dú)立咨詢業(yè)務(wù)時(shí)寫出來的。在《Java企業(yè)應(yīng)用設(shè)計(jì)與開發(fā)的專家一對(duì)一》一書中,Rod進(jìn)一步拓展了他的代碼,以闡述“如何讓應(yīng)用程序能以超出當(dāng)時(shí)大眾所慣于接受的易用性和穩(wěn)定性與J2EE平臺(tái)上的不同組件合作”的觀點(diǎn)。
在2001年,web應(yīng)用的主流編程模式為Java Servlet API和EJB。兩者都是由太陽微系統(tǒng)公司與其他一些開發(fā)商和利益團(tuán)體提出的,并在Java業(yè)界里獲得了廣泛的共識(shí)。那些非Web的應(yīng)用,比如用戶端的或批處理的應(yīng)用,也可以基于能夠提供所需功能的開源或商用工具和項(xiàng)目。
基于最優(yōu)方法并適用于各種應(yīng)用類型的Spring框架的建立要?dú)w功于Rod Johnson。這些想法也在他的書中得以闡述。書發(fā)表后,基于讀者的要求,源代碼在開源使用協(xié)議下得以提供。
一批自愿拓展Spring框架的程序開發(fā)員組成了團(tuán)隊(duì),2003年2月在Sourceforge上構(gòu)建了一個(gè)項(xiàng)目。在Spring框架上工作了一年之后,這個(gè)團(tuán)隊(duì)在2004年3月發(fā)布了第一個(gè)版本(1.0)。這個(gè)版本之后,Spring框架在Java社區(qū)里變得異常流行,部分的要?dú)w結(jié)于它好于一般水準(zhǔn)的文檔功能和參考文獻(xiàn),特別是對(duì)于一個(gè)開源項(xiàng)目而言尤其如此。
但是,Spring框架在2004年也備受批評(píng),有時(shí)它也成為熱烈爭論的主題。Spring的第一個(gè)版本發(fā)布時(shí),許多程序員和領(lǐng)先的設(shè)計(jì)人員把它看作是遠(yuǎn)離傳統(tǒng)編程模式的一步;特別是對(duì)于EJB而言尤其如此。Spring框架的一個(gè)重要設(shè)計(jì)目標(biāo)就是更容易地與已有的J2EE標(biāo)準(zhǔn)和商用工具整合。在很大程度上,這個(gè)目標(biāo)使得通過受爭議的官方委員會(huì)控制的規(guī)范文檔來定義功能變得可有可無。
Spring框架使之前并不受歡迎的技術(shù)在短時(shí)間內(nèi)迅速走紅,最有名的例子就是反向控制(IOC)。2004年,Spring框架的采用率非常之高;通過推出自身的AOP(面向方向的編程),Spring使AOP整體而言在Java社區(qū)里廣受歡迎。
2005年,Spring因具有里程碑意義的新的版本的推出,更多功能的添加,從而得到了比2004年更高的采用率。2004年底創(chuàng)建的Spring論壇也對(duì)框架的推廣而推波助瀾。論壇對(duì)廣大用戶而言已經(jīng)成為最重要的信息和幫助的源泉。
2005年,Spring框架的開發(fā)人員成立了自己的公司,來提供對(duì)Spring的商業(yè)支持,其中最顯著的就是與BEA的合作。2005年12月,第一個(gè)Spring會(huì)議在邁阿密舉行,3天的課程吸引了300名開發(fā)人員。2006年6月在安特衛(wèi)普召開的會(huì)議有400多名開發(fā)人員。 . Spring框架的主要功能
• 基于Java Beans的配置管理,采用IOC的原理,特別是對(duì)依賴注射技術(shù)的使用。這些都用來減少各組件間對(duì)實(shí)施細(xì)則的相互依賴性。 • 一個(gè)核心的,全局適用的bean工廠 • 一個(gè)一般抽象化的層面來管理數(shù)據(jù)庫間的數(shù)據(jù)處理 • 建立在框架內(nèi)的,對(duì)Java數(shù)據(jù)處理API和單獨(dú)的JDBC數(shù)據(jù)源的一般性策略。因此,在數(shù)據(jù)處理支持上對(duì)Java企業(yè)版本環(huán)境的依賴性得以消除 • 和一些可持續(xù)性的框架,如Hibernate,JDO,iBATIS和db4o,的整合 • web應(yīng)用中的MVC框架,基于核心的Spring功能,支持多種產(chǎn)生視圖的技術(shù),包括JSP,F(xiàn)reeMarker,Velocity,Tiles,iText,和POI • 大量的AOP框架以提供諸如數(shù)據(jù)處理管理的服務(wù)。同IOC的功能一樣,目的是提高系統(tǒng)的模塊化程度
|