1. 程式人生 > >Spring概述(轉載,略有更改)

Spring概述(轉載,略有更改)

Ch1. Spring概述 Spring為企業應用的開發提供了一個輕量級的解決方案,包括基於依賴注入的核心機制,基於AOP的宣告式事務管理,與多種持久層技術的整合,以及優秀的Web MVC框架等。 Spring支援對POJO(Plain Object Java Object,指最傳統的Java物件,和任何模式都無關)的管理。 Spring的作者是Rod Johnson。Spring獨立於應用伺服器,甚至無需應用伺服器的支援。

1. Spring體系介紹 l 核心機制 l Context容器 l Web支援 l MVC框架 l DAO支援 l ORM支援 l 面向方面程式設計支援

1.1Sping的核心和Context Spring使用BeanFactory作為應用中負責生產和管理各元件的工廠,同時也還是元件執行的容器。BeanFactory根據配置檔案確定容器中bean的實現,管理bean之間的依賴關係。ApplicationContext是BeanFactory的增強,該介面提供了在J2EE應用中的大量增強功能。

1.2Spring的Web和MVC Spring的Web框架圍繞分發器(DispatcherServlet)設計,DispatcherServlet將請求分發到不同的處理器。Spring的MVC框架提供清晰的角色劃分:控制器、驗證器、命令物件、表單物件和模型物件、分發器、處理器對映和檢視解析器。Sping支援多種表現層技術:Velocity、XSLT等等;甚至可以直接輸出pdf電子文件,或者excel文件。

1.3Spring的面向方面的程式設計 AOP完善Spring的依賴注入(DI)。AOP提供宣告式事務管理。Spring支援使用者自定義切面。Spring也能和AspectJ整合。 1.4Spring的持久化支援 對各種持久化技術提供一致的程式設計方式。

2. Spring的基本設計思想 Spring實現了兩種設計模式:工廠模式和單例模式。 例如:使用Spring至少有一個好處,即使沒有PersonFactory,程式一樣可以使用工廠模式,所有工廠模式的功能,Spring都可以提供。Spring對接受容器管理的bean,預設採用單體模式管理。

3. Spring的核心機制 依賴注入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。具體含義是:當某個角色需要呼叫另一個角色的協助時,在傳統的程式設計中,通常由呼叫者建立被呼叫者的例項。但在Spring中,建立被呼叫者的工作不再由呼叫者完成,因此稱作控制反轉;建立被呼叫者的例項的工作通常由Spring容器來完成,然後注入呼叫者,因此也稱為依賴注入。Spring的依賴注入對於呼叫者和被呼叫者幾乎沒有任何要求,完全支援對POJO之間依賴關係的管理。依賴注入通常有兩種:設值注入和構造注入。

3.1設值(set方法)注入 通過setter方法來傳入被呼叫者的例項。Spring會自動接管每個bean定義裡的property元素定義。Spring會在執行無參建構函式和建立預設的bean例項後,呼叫對應的setter方法為程式注入屬性值。Property定義的屬性值將不再由該bean來主動建立、管理。而改為被動接受Spring的注入。業務物件的更換變得相當簡單,物件和物件之間的依賴關係從程式碼裡分離出來,通過配置檔案動態管理。

3.2構造注入 通過建構函式完成依賴關係的設定。區別在於:建立Person例項中Axe屬性的時機不同――設值注入是先建立一個預設的bean例項,然後呼叫對應的setter方法注入依賴關係;而構造注入則在建立bean例項時,已經完成依賴關係的注入。

注入方式 優點 設值(set方法)注入 (1) 直觀 (2) 對於複雜的依賴關係,如果採用構造注入,會導致構造器過於臃 腫,效能下降 (3) 屬性可選時,多引數的構造器更加笨重

構造方法注入 (1) 可在構造器中決定依賴關係的注入順序 (2) 無需擔心後續程式碼的破壞 (3) 更符合高內聚原則

建議採用設值注入為主,構造注入為輔的注入策略。