Spring相關概念
1. 初識Spring
官網://spring.io 。Spring能幹什麼:用以開發web、微服務以及分散式系統等
-
Spring發展到今天已經形成了一種開發的生態圈,Spring提供了若干個項目,每個項目用於完成特定的功能。
說明:
圖中的圖標都代表什麼含義,可以進入 //spring.io/projects 網站進行對比查看。
這些技術並不是所有的都需要學習,額外需要重點關註:
Spring Framework
:Spring中最早最核心的技術,也是所有其他技術的基礎SpringBoot
:在Spring簡化開發的基礎上加速開發SpringCloud
:分散式之微服務架構的相關開發
2. Spring系統架構
-
Spring Framework是Spring生態圈中最基礎的項目,是其他項目的根基。
-
Spring Framework的5版本目前沒有最新的架構圖,而最新的是4版本,所以接下來主要研究的是4的架構圖
(1)核心層
- Core Container:核心容器,這個模組是Spring最核心的模組,其他的都需要依賴該模組
(2)AOP層
- AOP:面向切面編程,它依賴核心層容器,目的是在不改變原有程式碼的前提下對其進行功能增強
- Aspects:AOP是思想,Aspects是對AOP思想的具體實現
(3)數據層
- Data Access:數據訪問,Spring全家桶中有對數據訪問的具體實現技術
- Data Integration:數據集成,Spring支援整合其他的數據層解決方案,比如Mybatis
- Transactions:事務,Spring中事務管理是Spring AOP的一個具體實現,也是後期學習的重點內容
(4)Web層
- 這一層的內容將在SpringMVC框架具體學習
(5)Test層
- Spring主要整合了Junit來完成單元測試和集成測試
3. IOC、IOC容器、Bean、DI
3.1 IOC(Inversion of Control)控制反轉
3.1.1 什麼是控制反轉呢?
-
使用對象時,由主動new產生對象轉換為由外部提供對象,此過程中對象創建控制權由程式轉移到外部,此思想稱為控制反轉。
- 業務層要用數據層的類對象,以前是自己
new
的 - 現在自己不new了,交給
別人[外部]
來創建對象 別人[外部]
就反轉控制了數據層對象的創建權- 這種思想就是控制反轉
- 別人[外部]指定是什麼呢?
- 業務層要用數據層的類對象,以前是自己
3.1.2 Spring和IOC之間的關係是什麼呢?
- Spring技術對IOC思想進行了實現
- Spring提供了一個容器,稱為IOC容器,用來充當IOC思想中的”外部”
- IOC思想中的
別人[外部]
指的就是Spring的IOC容器
3.1.3 IOC容器的作用以及內部存放的是什麼?
- IOC容器負責對象的創建、初始化等一系列工作,其中包含了數據層和業務層的類對象
- 被創建或被管理的對象在IOC容器中統稱為Bean
- IOC容器中放的就是一個個的Bean對象
3.1.4 當IOC容器中創建好service和dao對象後,程式能正確執行么?
- 不行,因為service運行需要依賴dao對象
- IOC容器中雖然有service和dao對象
- 但是service對象和dao對象沒有任何關係
- 需要把dao對象交給service,也就是說要綁定service和dao對象之間的關係
3.2 DI(Dependency Injection)依賴注入
3.2.1 什麼是依賴注入呢?
- 在容器中建立bean與bean之間的依賴關係的整個過程,稱為依賴注入
- 業務層要用數據層的類對象,以前是自己
new
的 - 現在自己不new了,靠
別人[外部其實指的就是IOC容器]
來給注入進來 - 這種思想就是依賴注入
- 業務層要用數據層的類對象,以前是自己
3.2.2 IOC容器中哪些bean之間要建立依賴關係呢?
- 這個需要程式設計師根據業務需求提前建立好關係,如業務層需要依賴數據層,service就要和dao建立依賴關係
介紹完Spring的IOC和DI的概念後,我們會發現這兩個概念的最終目標就是:充分解耦,具體實現靠:
- 使用IOC容器管理bean(IOC)
- 在IOC容器內將有依賴關係的bean進行關係綁定(DI)
- 最終結果為:使用對象時不僅可以直接從IOC容器中獲取,並且獲取到的bean已經綁定了所有的依賴關係.
4. 總結
內容來B站黑馬程式設計師課程 。老師講得很好,有興趣的可以聽聽。