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) 更符合高內聚原則

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


本文來自 javacaihai 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/javacaihai/article/details/5091231?utm_source=copy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章