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