1. 程式人生 > >【學習Spring原理】之二:Spring最核心的類——DefaultListableBeanFactory

【學習Spring原理】之二:Spring最核心的類——DefaultListableBeanFactory

上一章提過的XmlBeanFactory其實是繼承自DefaultListableBeanFactory這個類。而DefaultListableBeanFactory是整個bean載入的核心部分,是Spring註冊及載入bean的預設實現,而XmlBeanFactory與它唯一不同的地方是,XmlBeanFactory使用了XmlBeanDefinitionReader來讀取xml配置,下面的繼承圖是我在idea裡的截圖:
繼承圖
這是《Spring原始碼深度解析》中對上圖類或介面的簡單介紹:
這裡寫圖片描述
這裡寫圖片描述
下面做一個簡單的DefaultListableBeanFactory使用,配置項和上一節一樣:

package com.ls.spring.bean.factory;

import com.ls.spring.bean.MyBean;
import org.junit.Test;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
import org.springframework
.core.io.Resource; import static org.junit.Assert.assertEquals; @SuppressWarnings("deprecation") public class DefaultListableBeanFactoryTest { @Test public void testSimpleLoad() { Resource resource = new ClassPathResource("beanFactory.xml"); DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(bf); reader.loadBeanDefinitions(resource); MyBean bean = (MyBean) bf.getBean("myBean"); assertEquals("Lon Bean", bean.getName()); } }

上面的程式碼可以分成以下步驟:
1.建立一個資源,這個資源包含了BeanDefinition的定義資訊。
2.建立一個DefaultListableBeanFactory。
3.建立一個BeanDefinition的讀取器,這裡使用XmlBeanDefinitionReader來載入XML檔案形式的BeanDefinition,當資源讀取分析完成後會回撥配置給BeanFaction。
4.使用XmlBeanDefinitionReader讀取並解析資源,這一步完成後,整個Ioc容器就建立起來了。