【學習Spring原理】之二:Spring最核心的類——DefaultListableBeanFactory
阿新 • • 發佈:2019-02-12
上一章提過的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容器就建立起來了。