spring框架——Spring 框架簡介

spring框架——Spring 框架簡介

Spring 是一個開源框架,是為了解決企業應用程式開發複雜性而建立的。框架的主要優勢之一就是其分層架構,分層架構允許您選擇使用哪一個元件,同時為 J2EE 應用程式開發提供整合的框架。

在這篇由三部分組成的 Spring 系列 的第 1 部分中,我將介紹 Spring 框架。我先從框架底層模型的角度描述該框架的功能,然後將討論兩個最有趣的模組:Spring 面向方面程式設計(AOP)和控制反轉 (IOC) 容器。接著將使用幾個示例演示 IOC 容器在典型應用程式用例場景中的應用情況。這些示例還將成為本系列後面部分進行的展開式討論的基礎,在本文的後面部分,將介紹 Spring 框架透過 Spring AOP 實現 AOP 構造的方式。

Spring 框架

Spring 框架是一個分層架構,由 7 個定義良好的模組組成。Spring 模組構建在核心容器之上,核心容器定義了建立、配置和管理 bean 的方式,如圖 1 所示。

圖 1。 Spring 框架的 7 個模組

spring框架——Spring 框架簡介

組成 Spring 框架的每個模組(或元件)都可以單獨存在,或者與其他一個或多個模組聯合實現。如果你想學習Java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有資料可以下載,有問題可以提問和交流。每個模組的功能如下:

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要元件是BeanFactory,它是工廠模式的實現。BeanFactory使用控制反轉 (IOC) 模式將應用程式的配置和依賴性規範與實際的應用程式程式碼分開。Spring 上下文:Spring 上下文是一個配置檔案,向 Spring 框架提供上下文資訊。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和排程功能。

Spring AOP:透過配置管理特性,Spring AOP 模組直接將面向方面的程式設計功能整合到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何物件支援 AOP。Spring AOP 模組為基於 Spring 的應用程式中的物件提供了事務管理服務。透過使用 Spring AOP,不用依賴 EJB 元件,就可以將宣告性事務管理整合到應用程式中。Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不同資料庫供應商丟擲的錯誤訊息。異常層次結構簡化了錯誤處理,並且極大地降低了需要編寫的異常程式碼數量(例如開啟和關閉連線)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結構。Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的物件關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務和 DAO 異常層次結構。Spring Web 模組:Web 上下文模組建立在應用程式上下文模組之上,為基於 Web 的應用程式提供了上下文。所以,Spring 框架支援與 Jakarta Struts 的整合。Web 模組還簡化了處理多部分請求以及將請求引數繫結到域物件的工作。Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程式的 MVC 實現。透過策略介面,MVC 框架變成為高度可配置的,MVC 容納了大量檢視技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何 J2EE 伺服器中,大多數功能也適用於不受管理的環境。Spring 的核心要點是:支援不繫結到特定 J2EE 服務的可重用業務和資料訪問物件。毫無疑問,這樣的物件可以在不同 J2EE 環境 (Web 或 EJB)、獨立應用程式、測試環境之間重用。

IOC 和 AOP

控制反轉模式(也稱作依賴性介入)的基本概念是:不建立物件,但是描述建立它們的方式。在程式碼中不直接與物件和服務連線,但在配置檔案中描述哪一個元件需要哪一項服務。容器 (在 Spring 框架中是 IOC 容器) 負責將這些聯絡在一起。

在典型的 IOC 場景中,容器建立了所有物件,並設定必要的屬性將它們連線在一起,決定什麼時間呼叫方法。下表列出了 IOC 的一個實現模式。

型別 1服務需要實現專門的介面,透過介面,由物件提供這些服務,可以從物件查詢依賴性(例如,需要的附加服務)型別 2透過 JavaBean 的屬性(例如 setter 方法)分配依賴性型別 3依賴性以建構函式的形式提供,不以 JavaBean 屬性的形式公開

Spring 框架的 IOC 容器採用型別 2 和型別3 實現。

面向方面的程式設計

面向方面的程式設計,即 AOP,是一種程式設計技術,它允許程式設計師對橫切關注點或橫切典型的職責分界線的行為(例如日誌和事務管理)進行模組化。AOP 的核心構造是方面,它將那些影響多個類的行為封裝到可重用的模組中。

AOP 和 IOC 是補充性的技術,它們都運用模組化方式解決企業應用程式開發中的複雜問題。在典型的面向物件開發方式中,可能要將日誌記錄語句放在所有方法和 Java 類中才能實現日誌功能。在 AOP 方式中,可以反過來將日誌服務模組化,並以宣告的方式將它們應用到需要日誌的元件上。當然,優勢就是 Java 類不需要知道日誌服務的存在,也不需要考慮相關的程式碼。所以,用 Spring AOP 編寫的應用程式程式碼是鬆散耦合的。

AOP 的功能完全整合到了 Spring 事務管理、日誌和其他各種特性的上下文中。

IOC 容器

Spring 設計的核心是org。springframework。beans包,它的設計目標是與 JavaBean 元件一起使用。這個包通常不是由使用者直接使用,而是由伺服器將其用作其他多數功能的底層中介。下一個最高階抽象是BeanFactory介面,它是工廠設計模式的實現,允許透過名稱建立和檢索物件。BeanFactory也可以管理物件之間的關係。

BeanFactory支援兩個物件模型。

單態模型提供了具有特定名稱的物件的共享例項,可以在查詢時對其進行檢索。Singleton 是預設的也是最常用的物件模型。對於無狀態服務物件很理想。原型模型確保每次檢索都會建立單獨的物件。在每個使用者都需要自己的物件時,原型模型最適合。

bean 工廠的概念是 Spring 作為 IOC 容器的基礎。IOC 將處理事情的責任從應用程式程式碼轉移到框架。正如我將在下一個示例中演示的那樣,Spring 框架使用 JavaBean 屬性和配置資料來指出必須設定的依賴關係。

BeanFactory 介面

因為org。springframework。beans。factory。BeanFactory是一個簡單介面,所以可以針對各種底層儲存方法實現。最常用的BeanFactory定義是XmlBeanFactory,它根據 XML 檔案中的定義裝入 bean