1. 程式人生 > >Spring的IoC和DI的實現(XML檔案配置)

Spring的IoC和DI的實現(XML檔案配置)

一.簡介

  1. IoC和DI好處
    Spring的依賴注入和控制反轉的功能是Spring很重要的一部分,通過這兩個功能可以對系統進行解耦,也不需要瑣碎的控制被依賴物件的宣告週期;
  2. 實現步驟
    IoC和DI的核心是通過Spring容器來管理bean,控制bean的宣告週期,並提供給依賴方。Spring容器管理bean的步驟為:從配置中讀取bean配置、beanFactory註冊bean物件、bean的初始化、獲取bean的過程;
  3. 下文將通過分析ClassPathXmlApplicationContext來介紹Spring容器管理bean的過程。

二.UML圖(圖不太標準,工具不到位請見諒,小箭頭表示繼承,大的表示依賴)

在這裡插入圖片描述

三.流程解析

  1. 總體流程
    1)新建ClassPathXmlApplicationContext,用來完成從XML檔案中載入bean、註冊bean和初始化bean的功能,該類的建構函式引數為location,並在建構函式中呼叫refresh函式,該函式用來完成載入、註冊、初始化bean的功能;
    2)從配置檔案的路徑下,利用XmlBeanDefinitionReader讀取對應的配置。首先利用從路徑下獲取InputStream,然後利用Dom解析XML配置,並將對應的BeanDefinition載入到registry的map中;
    3)將registry中的BeanDefinition註冊到BeanFactory的Map中;
    4)註冊BeanPostProcessors,用來將bean的周邊環繞的processor,這些processor可以通過註解、切面等方式定義;
    5)BeanFactory根據map中的BeanDefinition來初始化bean,利用反射來為屬性設定值,並在初始化前執行環繞函式;
    6)通過新建的ApplicationContext來getBean;