Spring的IOC容器
Ioc容器的大致圖示
IOC思想
Ioc—Inversion of Control,即“控制反轉”
IoC不是一種技術,只是一種思想,一個重要的物件導向程式設計的法則,它能指導我們如何設計出鬆耦合、更優良的程式。傳統應用程式都是由我們在類內部主動建立依賴物件,從而導致類與類之間高耦合,難於測試;有了IoC容器後,把建立和查詢依賴物件的控制權交給了容器,由容器進行注入組合物件,所以物件與物件之間是鬆散耦合,這樣也方便測試,利於功能複用,更重要的是使得程式的整個體系結構變得非常靈活。
其實IoC對程式設計帶來的最大改變不是從程式碼上,而是從思想上,發生了“主從換位”的變化。應用程式原本是老大,要獲取什麼資源都是主動出擊,但是在IoC/DI思想中,應用程式就變成被動的了,被動的等待IoC容器來建立並注入它所需要的資源了。
所謂IoC,對於spring框架來說,就是由spring來負責控制物件的生命週期和物件間的關係。
DI依賴注入
DI—Dependency Injection,即“依賴注入”:
是元件之間依賴關係由容器在執行期決定,形象的說,即由容器動態的將某個依賴關係注入到元件之中(動態的向某個物件提供它所需要的其他物件)。依賴注入的目的並非為軟體系統帶來更多功能,而是為了提升元件重用的頻率,併為系統搭建一個靈活、可擴充套件的平臺。通過依賴注入機制,我們只需要通過簡單的配置,而無需任何程式碼就可指定目標需要的資源,完成自身的業務邏輯,而不需要關心具體的資源來自何處,由誰實現。
理解DI的關鍵是:“誰依賴誰,為什麼需要依賴,誰注入誰,注入了什麼”,那我們來深入分析一下:
●誰依賴於誰:當然是應用程式依賴於IoC容器;
●為什麼需要依賴:應用程式需要IoC容器來提供物件需要的外部資源;
●誰注入誰:很明顯是IoC容器注入應用程式某個物件,應用程式依賴的物件;
●注入了什麼:就是注入某個物件所需要的外部資源(包括物件、資源、常量資料)。
注入的方法分類
建構函式注入:
通過呼叫類的建構函式,將介面實現類通過建構函式變數傳入
public class MoAttack {
private GeLi geli;
//①注入革離的具體扮演者
public MoAttack(GeLi geli){
this.geli = geli;
}
public void cityGateAsk(){
geli.responseAsk("墨者革離!");
}
}
屬性注入:
屬性注入可以有選擇地通過Setter方法完成呼叫類所需依賴的注入,更加靈活方便
public class MoAttack {
private GeLi geli;
//①屬性注入方法
public void setGeli(GeLi geli) {
this.geli = geli;
}
public void cityGateAsk() {
geli.responseAsk("墨者革離");
}
}
介面注入:
public interface ActorArrangable {
void injectGeli(GeLi geli);
}
public class MoAttack implements ActorArrangable {
private GeLi geli;
//①實現介面方法
public void injectGeli (GeLi geli) {
this.geli = geli;
}
public void cityGateAsk() {
geli.responseAsk("墨者革離");
}
}
相關文章
- Spring框架IOC容器Spring框架
- Spring--IOC容器Spring
- 淺析 Spring 的IOC容器Spring
- 對Spring IOC容器的思考Spring
- Spring IoC 容器的擴充套件Spring套件
- 深入理解Spring IOC容器Spring
- Spring IOC 一——Spring容器裝配BeanSpringBean
- 從原始碼看Spring中IOC容器的實現(二):IOC容器的初始化原始碼Spring
- Spring IOC容器概念及分類Spring
- 手寫Spring---IOC容器(1)Spring
- Spring IOC容器實現機制Spring
- Spring IOC容器的設計與實現Spring
- Spring原始碼分析:Spring IOC容器初始化Spring原始碼
- spring ioc原理-容器初始化的大致流程Spring
- Spring原始碼閱讀-IoC容器解析Spring原始碼
- spring原始碼解析之IOC容器(一)Spring原始碼
- Spring IOC容器核心流程原始碼分析Spring原始碼
- 2、Spring使用+ioc容器配置使用1Spring
- Spring原始碼剖析3:Spring IOC容器的載入過程Spring原始碼
- Spring(十二):IOC容器中Bean的生命週期方法SpringBean
- Spring實現IOC容器的兩種實現方式Spring
- 03-Spring IOC容器的基本使用(註解的使用)Spring
- Spring 原始碼 (2)Spring IOC 容器 前戲準備工作Spring原始碼
- Laravel的Ioc容器Laravel
- IoC 容器
- IOC容器
- spring原始碼深度解析— IOC 之 容器的基本實現Spring原始碼
- Spring原始碼解讀(1)-IOC容器BeanDefinition的載入Spring原始碼Bean
- Spring IOC 容器預啟動流程原始碼探析Spring原始碼
- Spring核心原理之IoC容器初體驗(2)Spring
- 深入理解Spring IOC容器及擴充套件Spring套件
- 如何向Spring IOC 容器 動態註冊beanSpringBean
- WEB應用是如何運用Spring的?#①Spring的IOC容器如何在WEB中建立?WebSpring
- 造輪子:實現一個簡易的 Spring IoC 容器Spring
- Spring5原始碼解析_IOC之容器的基本實現Spring原始碼
- 4、Spring IOC容器 Bean物件例項化的3種方式SpringBean物件
- Spring IoC容器初始化 — Resource定位原始碼分析Spring原始碼
- spring原始碼解析之IOC容器(四)——屬性注入Spring原始碼