應(yīng)該使用過Spring的人都被問題過這個(gè)問題, What is Spring?(當(dāng)然不能回答春天了,呵呵)
其實(shí)在Spring官方網(wǎng)站就是具體的介紹,下面本人對其譯成了中文.如有翻譯不當(dāng)之處,敬請各位指正。
Spring 是一個(gè)基于Java/JavaEE的應(yīng)用開發(fā)平臺。其實(shí)現(xiàn)是由作者Rod Johnson在2002年出版《Expert One-on-One J2EE Design and Development》一書后,總結(jié)經(jīng)驗(yàn)后,研發(fā)而成。
Spring的核心內(nèi)容包括:
1. 最輕量級的容器,提供集中式,自動配置與裝配應(yīng)用業(yè)務(wù)對象功能。
Spring提供了管理業(yè)務(wù)對象的一致方法并且鼓勵(lì)了注入對接口編程而不是對類編程的良好習(xí)慣。Spring的架構(gòu)基礎(chǔ)是基于使用POJO對象管理的Inversion of Control(控制反轉(zhuǎn))容器,提供非侵入的方式為當(dāng)前一些復(fù)雜的系統(tǒng)應(yīng)用提供松耦合,一致性的業(yè)務(wù)對象配置管理。容器以快捷開發(fā)為出發(fā)點(diǎn),方便開發(fā)中的可測試性和部署時(shí)的可擴(kuò)展性為目的。實(shí)現(xiàn)只針對單個(gè)業(yè)務(wù)組件在獨(dú)立環(huán)境的下進(jìn)行開發(fā)與測試,在部署時(shí)再集成到任意的JavaSE或JavaEE環(huán)境中。
2.提供了唯一的事務(wù)管理抽象,基于插件式的事務(wù)管理(聲明性事務(wù)管理)能夠很容易的實(shí)現(xiàn)事務(wù)層管理,而無需了解各種底層事務(wù)實(shí)現(xiàn),例如JTA或者JDBC事務(wù)提供一個(gè)一致的編程模型。相對于只依賴JavaEE環(huán)境的普通的JTA或EJB CMT方式, Spring就更簡單輕便了。
3. 提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進(jìn)了效率(大大減少了開發(fā)的代碼量)并且減少了可能的錯(cuò)誤。基于JDBC的異常信息也是完全遵循Spring的公共DAO異常層級。
4. Spring的數(shù)據(jù)訪問層集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps等 O/R mapping解決方案,其目的是提供統(tǒng)一的DAO支持類實(shí)現(xiàn)和事務(wù)管理策略。尤其Hibernate對SpringIOC特性的支持,能更好的實(shí)現(xiàn)集成,以更好的利用Spring的公共事務(wù)與DAO異常層級。
5. Spring提供了一個(gè)用標(biāo)準(zhǔn)Java編寫的AOP框架(也能集成AspectJ),提供基于POJOs的聲明式的事務(wù)管理和其他企業(yè)事務(wù)--如果你需要還能實(shí)現(xiàn)你自己的aspects。這個(gè)框架足夠強(qiáng)大,使得應(yīng)用程序能夠拋開EJB的復(fù)雜性,同時(shí)享受著和傳統(tǒng)EJB相關(guān)的關(guān)鍵服務(wù)。當(dāng)然也可以選擇不支持JTA方式的開發(fā),尤其如不支持JTA的Tomcat服務(wù)器下開發(fā)單數(shù)據(jù)庫應(yīng)用。
6. 提供可以與IoC容器集成的強(qiáng)大而靈活的MVC Web框架. 其本身通過提供策略接口與多視圖支持技術(shù)(如JSP, Velocity模塊引擎, Tiles, iText和POI)實(shí)現(xiàn)框架的高可配置性。 Spring作為中間層也可以很容易的與其它第三方web MVC框架實(shí)現(xiàn)集成,如Struts,WebWork,Struct2(Struts與WebWork的集成)和Tapertry.
Good Luck!
Yours Matthew!