Spring IOC容器概念及分類

My_name_is_ZwZ發表於2018-10-19

什麼是Spirng IOC容器?

spring容器是spring框架的核心,容器建立物件並且把它們連線在一起,並管理它們的生命週期。說白了就是之前的Java應用程式中的物件是程式設計師new出來的,現在不用我們new了,交給spring容器去管理了。

Spring IOC容器如何管理物件?

使用依賴注入(DI)來管理組成一個應用程式的元件。依賴注入就是控制反轉(IOC)的一個具體例子。

【注】這樣子去理解IOC/DI的關係:他們是對同一個事情的不同描述。依賴注入是站在應用程式的角度在描述整個過程,而控制反轉是從容器的角度在描述。

Spring IOC如何工作?

Spring IoC 容器利用 Java 的 POJO 類和配置後設資料來生成完全配置和可執行的系統或應用程式。如下圖:

 Spring 框架提供的容器:

1. Spring BeanFactory容器:最簡單的容器,給DI提供了基本的支援。移動裝置中為了節省有限的資源,會被優先選擇,即主要用於輕量級應用。其用org.springframework.beans.factory.BeanFactory介面來定義。其中 org : 表示這是一個開源包,因為apache是一個非盈利組織,所以產品一般以org開頭;springframework : spring框架 。

2. Spring ApplicationContext容器:在Spring BeanFactory容器的基礎上,新增了更多企業特定的功能,也就是比BeanFactory更加優秀更加牛逼了。其用org.springframework.context.ApplicationContext介面來定義。較BeanFactory而言,可以載入配置檔案中定義的bean,將所有bean集中在一起,有請求的時候分配bean。

Spring IOC容器的使用:

1. BeanFactory容器的使用:

public static void main(String[] args){
    //ClassPathResource載入在路徑CLASSPATH下可用的xml配置檔案
    //XmlBeanFactory負責建立並初始化所有物件即xml檔案中的bean
    XmlFactory factory = new XmlBeanFactory(new ClassPathResource("   .xml"));    
    類名 物件名 =(類名)factory.getBean("  ");
}

 2. ApplicationContext 容器的使用:

public static void main(String[] args){
    //ApplicationContext介面的實現類有很多種,這裡使用ClassPathXmlApplicationContext
    ApplicationContext app = new ClassPathXmlApplicationContext("  .xml");
    類名 物件名 =(類名)app.getBean(" ");
}

 由以上的程式碼順序可知,關於spring容器管理物件的方法和過程我們可以理解成:在載入xml檔案的時候,這個類幫我們將xml檔案中的<bean>標籤進行了解析(其實每一個<bean>標籤片面點兒說都對應著一個物件,模板bean除外),這樣子spring容器就和我們所說的物件聯絡了起來,spring容器也是一個類,在Java中很多“高大上”的名字其實都是對應一個類,只不過名字是根據這個類所做的事情或者它在程式中的身份取的。

相關文章