Spring Framework簡介

Spring Framework是一個輕量級的解決方案,也是構建企業級應用的一種一站式服務。Spring是模塊化的,容許您僅使用所需的部件,而無需使用其他的部件。能夠單獨使用IoC容器,並在其頂層使用任何web框架;也能夠僅使用Hibernate集成代碼或JDBC抽象層。Spring Framework支持聲明式的事務管理、經過RMI或Web服務實現遠程調用和各類手段的數據持久化。它提供了一個全功能的MVC框架,可以將AOP透明的繼承到軟件中。web

Spring被設計爲非侵入式的,這意味着你的邏輯代碼一般不依賴於框架自己。在集成層中(例如數據訪問層),存在一些對於數據訪問技術和Spring庫的依賴。可是很容易將這些依賴與代碼的其他部分隔離開來。spring

Spring Framework是一個Java平臺,爲開發Java應用程序提供全面的基礎設施支持。 Spring處理基礎設施,以便您能夠專一於您的應用程序。數據庫

Spring使您可以從「簡單的Java對象」(POJO)構建應用程序,並將企業服務非侵入式應用於POJO。此功能適用於Java SE編程模型以及完整和部分Java EE。express

做爲應用程序開發人員,您能夠從Spring平臺中獲益如何:編程

  • 使Java方法在數據庫事務中執行,而沒必要處理事務API;
  • 使本地Java方法成爲HTTP端點,而無需處理Servlet API;
  • 使本地Java方法成爲消息處理程序,而無需處理JMS API;
  • 使本地Java方法成爲管理操做,而無需處理JMX API;

依賴注入和控制反轉

Java應用程序——一個廣義的名字,代指從受限的嵌入式應用程序到n層服務器端企業級應用程序——通常由對象以及它們之間的協做構成。所以,應用程序中的對象彼此之間擁有依賴關係。設計模式

雖然Java平臺提供了豐富的應用程序開發功能,但它缺少將基本模塊組織成總體的方法,並將該任務留給架構師和開發人員。雖然可使用工廠方法、抽象工廠、構建器、修飾器和服務定位等設計模式來組織構成應用程序的各類類和對象,可是這些設計模式僅僅是簡單給出了名稱的最佳實踐、能夠作什麼,在哪裏應用、解決什麼問題等等。設計模式是形式化的最佳實踐,你必須在你的應用程序中本身實現。數組

Spring Framework的控制反轉組件提供將不一樣組件組成完整、可用的應用程序的正式方法來解決上述問題。Spring Framework將形式化的設計模式編輯爲能夠集成在應用程序中的類的對象。緩存

「問題是,什麼方面的控制是反轉了?」 Martin Fowler在2004年在他的網站上提出了關於控制反轉(IoC)的問題。Fowler建議將其從新命名,使其更加自明,並提出了依賴注入。tomcat

框架模塊

Spring Framework的主要功能有大概20個模塊組成。這些模塊主要分爲 核心容器、數據訪問/集成、Web、AOP(面向切面編程)、Instrumentation、消息和測試,以下圖所示。 輸入圖片說明服務器

核心容器

核心容器包括spring-core, spring-beans, spring-context, spring-context-support, spring-expression模塊。

spring-core和spring-beans模塊提供了框架的基礎部分,包括控制反轉和依賴注入的功能。BeanFactory是工廠模式的複雜實現。它消除了編程單例的須要,並容許將依賴關係的規則和配置與實際的程序邏輯解耦。

Context(spring-context)模塊創建在Core和Beans模塊基礎上:它提供一種獲取對象的框架化方法,與JNDI註冊類似。Context模塊繼承了Beans模塊的功能,並增長了對國際化(使用,例如resource bundles)、事件傳播、資源加載以及context的透明建立方法(例如Servlet容器建立context的方法)。Context模塊還支持Java EE功能,例如EJB、JMX和basic remote。ApplicationContext接口是Context模塊的焦點。spring-context-support爲常見第三方庫集成到Spring應用上下文提供支持,例如緩存(EhCache、Guava、JCache),郵件(JavaMail),調度(CommonJ,Quartz)和模版引擎(FreeMarker、JasperReports、Velocity)。

spring-expression模塊提供了一個強大的表達式語言用於查詢和維護運行時的對象圖譜。它是JSP 2.1 規範中定義的 unified EL的擴展。它支持讀取和設置屬性值,property assignment(?),方法調用,數組、集合和索引集的方法、邏輯和算術運算符,命名變量和從Spring IoC容器中檢索對象。它還支持列表的projection(?)和選擇,列表的聚合。

AOP 及 Instrumentation

spring-aop模塊提供AOP聯盟兼容的面向切面編程的實現,容許自定義方法攔截器和切入點,以便將其與功能代碼解耦。使用源碼級別的元數據功能,能夠將行爲信息合併到代碼中,這種方法相似於.NET的屬性。

單獨的spring-aspects模塊提供與AspectJ集成的功能。

spring-instrument模塊提供了類instrumentation的支持和在指定應用服務器使用的classloader的實現。spring-instrument-tomcat模塊提供Spring的tomcat instrumentation代理。

(Spring in action中對於instrument的論述:提供了爲JVM添加代理的功能。具體來說,它爲Tomcat提供了一個織入代理,可以爲Tomcat傳遞類文件,就像這些文件是被類加載器加載的同樣。這個模塊使用場景很是有限。)

消息

Spring Framework 4 包含spring-messaging模塊,提供了從Spring集成項目中抽象出的關鍵功能,好比Message、MessageChannel、MessageHandler和消息應用的其餘基礎服務。該模塊還包括一系列註解,用於將消息映射到方法,與Spring MVC的編程模型的註解類似。

數據訪問/集成

數據訪問/集成層由 JDBC, ORM, OXM, JMS, 和 Transaction 模塊組成。

spring-jdbc 模塊提供一個JDBC抽象層,用於消除JDBC的冗長代碼並解析數據庫廠商的特定錯誤代碼。

spring-tx 模塊支持經過實現特定的接口來管理編程式和聲明式的事務管理,對全部POJOs均適用。

spring-orm 模塊對流行的對象-關係映射API(包括JPA、JDO和Hibernate)提供集成層。使用spring-orm模塊可使用上述的ORM框架與Spring其它特性結合使用,例如上文提到的簡單聲明式的事務管理功能。

spring-oxm 模塊提供一個抽象層支持Object/XML映射的實現包括JAXB、Castor、XMLBeans、JiBX和XStream。

spring-jms 模塊(Java Messaging Service)包括生產和消費消息的主要功能。從4.1開始,支持與spring-messaging 模塊的集成。

Web

Web 層由 spring-web, spring-webmvc, spring-websocket, 和 spring-webmvc-portlet 組成 。

spring-web 模塊提供了基本的面向 web 開發的集成功能,例如文件上傳、使用Servlet監聽器和麪向對象的應用上下文初始化IoC容器。它同時包含HTTP 客戶端和Spring遠程訪問支持的web相關部分。

spring-webmvc模塊(也被稱爲web-servlet模塊)包含了web應用中MVC和REST Web服務實現。實現了domain model代碼和web 表單之間的徹底分離,而且能夠與框架的其它功能集成。

spring-webmvc-portlet模塊(也被稱爲web-portlet模塊)提供了Portlet環境中的MVC實現和麪向Servlet的spring-webmvc模塊的功能鏡像。

測試

spring-test模塊支持經過JUnit或TestNG來進行單元測試和集成測試。它提供了常量加載和緩衝Spring應用上下文的功能。也提供模擬對象,用於隔離測繪代碼。

相關文章
相關標籤/搜索