Spring框架 入門(概念)
目錄
作為應用程式開發人員,你可以如何從 Spring 平臺中受益的示例:
Spring簡介、入門
Spring是公認最強大的框架之一。
Spring在英語中含義是春天,對於Java EE開發者來說,Spring框架出現確實帶來了一股全新的春天的氣息。
早在2002年,Rod Johson在其編著的《Expert one to one J2EE design and development》書中,對Java EE框架臃腫、低效、脫離現實的種
種現狀提出了很多質疑,並積極尋求探索革新之道。由他主導編寫了interface21框架,從實際需求出發,著眼於輕便、靈巧,易
於開發、測試和部署的輕量級開發框架。以interface21框架為基礎,並集成了其它許多開源成果,於2004年3月24日,釋出了
1.0正式版取名為Spring。
Spring的核心是個輕量級容器,實現了IoC(控制翻轉)模式的容器,基於此核心容器所建立的應用程式,可以達到程式元件的
鬆散耦合。這些特性都使得整個應用程式維護簡化。 Spring框架核心由下圖所示的七個模組組成。
作為應用程式開發人員,你可以如何從 Spring 平臺中受益的示例:
- 在資料庫事務中執行Java方法,而不必處理事務 API 。
- 使本地Java方法成為遠端過程,而不必處理遠端 API 。 (意思就是無須管相關的遠端呼叫api,
- Spring已經封裝好了,你自己只需要專注自己的邏輯即可,下同,不再解釋)
- 使本地Java方法成為管理操作,而不必處理 JMX API 。
- 使本地Java方法成為訊息處理程式,而不必處理 JMS API 。
七大內容:
-
核心容器(Core)
-
AOP模組
-
物件/關係對映整合模組ORM
-
JDBC抽象和DAO模組
-
Spring的Web模組
-
應用上下文(Context)模組
-
Spring的MVC框架
1、核心容器(Core):
Spring框架控制反轉(IoC)元件通過提供一種形式化的手段將不同的元件組成一個完全可用的應用程式來解決這個問題。
Spring框架將形式化的設計模式編譯為可以整合到自己的應用程式中的第一類物件。
許多組織和機構以這種方式使用Spring框架來設計強大的,可維護的應用程式。
核心容器由 spring-core , spring-beans , spring-context , spring-contextsupport
和 spring-expression(Spring Expression Language)模組 組成。
spring-core 和 spring-beans 模組提供了框架的基本部分,包括 IoC 和依賴注入功能。
Context(spring-context) 模組建立在 Core和Beans模組 提供的實體基礎之上:
它是一種以類似於 JNDI登錄檔 的框架樣式方式訪問物件的手段。
Context模組 從 Beans模組 繼承其特性,並增加了對國際化(例如使用資源束),事件傳播,
資源載入以及通過例如 Servlet容器 的透明建立上下文的支援。
Context模組 還支援 Java EE功能 ,如 EJB , JMX 和基本遠端處理。
ApplicationContext 介面是 Context模組 的焦點。 spring-context-support 提供支援將常見的第三方庫整合到
Spring 應用程式上下文中,
特別是用於快取( EhCache , JCache )和定時任務等( CommonJ , Quartz )。
spring-expression 模組提供了一個強大的表示式語言,用於在執行時查詢和操作物件圖它是JSP 2.1規範中規定
的統一表達式語言(統一 EL )的擴充套件。 該語言支援設定和獲取屬性值,
屬性賦值,方法呼叫,訪問陣列的內容,集合和索引器,邏輯和算術運算子,命名變數,
以及通過 Spring IoC 容器中的名稱檢索物件。 它還支援列表投影和選擇以及公共列表聚
2、AOP模組:
AOP即面向切面程式設計技術,Spring在它的AOP模組中提供了對面向切面程式設計的豐富支援。
AOP允許通過分離應用的業務邏輯與系統級服務(例如安全和事務管理)進行內聚性的開發。
應用物件只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責其它的系統級關注點,例如日誌或事務支援。
spring-aop 模組提供了一個符合 AOP Alliance-compliant 的面向方面的程式設計實現,
允許你定義例如方法攔截器和切入點來乾淨地解耦實現應該分離的功能的程式碼。
使用原始碼級元資料功能,你還可以以類似於 .NET 屬性的方式將行為資訊合併到程式碼中。
單獨的 spring-aspects 模組提供與 AspectJ 的整合。
spring-instrument-tomcat 模組提供類儀器支援和類載入器實現以在某
些應用伺服器中使用。 spring-instrument-tomcat 模組包含 Spring 的 Tomcat 的工具代理。
3、物件/關係對映整合模組ORM
Hibernate是成熟的ORM產品,Spring並沒有自己實現ORM框架而是集成了幾個流行的ORM
產品如Hibernate、JDO和iBATIS等。可以利用Spring對這些模組提供事務支援等。
4、JDBC抽象和DAO模組
Spring雖然集成了幾個ORM產品,但也可以不選擇這幾款產品,因為Spring提供了JDBC和DAO模組。該模組對現有的
JDBC技術進行了優化。你可以保持你的資料庫訪問程式碼乾淨簡潔,並且可以防止因關閉資料庫資源失敗而引起的問題。
資料訪問/整合層由 JDBC , ORM , OXM , JMS 和 Transaction 模組組成。
spring-jdbc 模組提供了一個 JDBC 抽象層,消除了對繁瑣的 JDBC 編碼和解析資料庫供應商特定的錯誤程式碼的需要。
spring-tx 模組支援實現特殊介面的類以及所有 POJO (普通 Java 物件)的程式設計和宣告事務管理。
spring-orm 模組為流行的物件關係對映 API 提供整合層,包括 JPA 和 Hibernate 。
使用 spring-orm 模組,您可以使用這些 O / R 對映框架結合 Spring 提供的所有其他功能,例如前面提到的簡單宣告式事務管
理功能。
spring-oxm 模組提供了一個支援 物件/ XML 對映實現的抽象層,例如JAXB,Castor,JiBX和XStream。
spring-jms 模組(Java訊息服務) 包含用於生成和使用訊息的功能 。從 Spring Framework 4.1 開始,它提供了與 spring-
messaging 模組的集合。
5、Spring的Web模組
Web上下文模組建立於應用上下文模組之上,提供了一個適合於Web應用的上下文。另外,這個模組還提供了一些面向服務支
持。
例如:實現檔案上傳的multipart請求,它也提供了Spring和其它Web框架的整合,比如Struts、WebWork。Web 層由 spring-
web , spring-webmvc 和 spring-websocket 模組組成。( 注:這裡和4的文件比少了spring-webmvc-portlet模組 )spring-
web 模組提供基本的面向 Web 的整合功能,例如多部分檔案上傳功能和使用 Servlet 偵聽器和麵向 Web 的應用程式上下文來初
始化 IoC 容器。
它還包含一個 HTTP 客戶端和 Web 的相關部分的 Spring 的遠端支援。spring-webmvc 模組(也稱為 Web-Servlet 模組)包
含用於 Web 應用程式的 Spring 的模型檢視控制器(MVC)和REST Web服務實現。 Spring 的 MVC 框架提供了 domain
model (領域模型)程式碼和 Web 表單之間的清晰分離,並且集成了 Spring Framework 所有的其他功能。
6、應用上下文(Context)模組
核心模組的BeanFactory使Spring成為一個容器,而上下文模組使它成為一個框架。Web上下文模組建立於應用上下文模組之
上,提供了一個適合於Web應用的上下文。該模組還提供了一些面向服務支援這個模組擴充套件了BeanFactory的概念,增加了對國
際化(I18N)訊息、事件傳播以及驗證的支援。
另外,這個模組還提供了許多企業服務,例如電子郵件、JNDI訪問、EJB整合、遠端以及時序排程(scheduling)服務。也包
括對模版框架例如Velocity和FreeMarker整合的支援。
7、Spring的MVC框架
Spring為構建Web應用提供了一個功能全面的MVC框架。雖然Spring可以很容易地與其它MVC框架整合,例如Struts2,但
Spring的MVC框架使用IoC對控制邏輯和業務物件提供了完全的分離。