【學習Spring原理】之一:最基礎的IOC容器接口——BeanFactory

首先,所謂Ioc容器,是指一個能夠容納和管理Bean的容器,而BeanFactory是Spring Ioc容器實現類必須遵守的一個最基礎的接口。
《Spring源碼深度解析》裏有一個最簡單的例子:
首先寫一個最簡單的Bean:

package com.ls.spring.bean;

public class MyBean {

    private String name = "Lon Bean";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

然後寫一個xml配置文件beanFactory.xml,用來聲明這個bean:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="myBean" class="com.ls.spring.bean.MyBean"/>

</beans>

最後再Test類裏測試BeanFactory:

package com.ls.spring.bean.factory;

import com.ls.spring.bean.MyBean;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import static org.junit.Assert.*;

@SuppressWarnings("deprecation")
public class BeanFactoryTest {

    @Test
    public void testSimpleLoad() {
        Resource resource = new ClassPathResource("beanFactory.xml");
        BeanFactory bf = new XmlBeanFactory(resource);
        MyBean bean = (MyBean) bf.getBean("myBean");
        assertEquals("Lon Bean", bean.getName());
    }
}

執行之前可以看出XmlBeanFactory就是BeanFactory的具體實現類之一(它繼承自DefaultListableBeanFactory,一個非常核心的類),而且從類名不難看出,它是一個與xml有關的BeanFactory,也就是說它是一個可以讀取以xml文件方式定義的BeanDefinition(這個以後再看,現在我可以理解爲一個包含bean集合的一種數據結構)的容器。

執行Test,我們會發現assertEquals斷言成功了,證明MyBean已成功實例化,並且BeanFactory對象成功管理了MyBean實例,通過getBean方法來獲取MyBean實例。

其實上面Test執行的步驟可簡單地概括爲:
1.讀取配置文件BeanFactory.xml。
2.在BeanFactory.xml中找到對應的Bean類,並實例化,然後把實例交給BeanFactory對象管理。
3.通過getBean方法從BeanFactory對象中獲取實例化後的實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章