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