【学习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对象中获取实例化后的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值