package com.text.beanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
import com.spring.controller.FristBeanController;
import com.spring.controller.HelloController;
/**
* 测试编程式使用springIOC容器,并且获取bean
* 通过这个测试类初步理解IOC加载bean的过程:
* 1.首先先要实例化一个IOC容器;
* 2.然后在程序中找到bean定义的位置并读取他;
* 3.将读取的bean定义配置给IOC容器;
*
* @author wangshuaimin
*/
public class ProgrammeGetBean {
public static void main(String[] args) {
/*ClassPathResource Resource的一种实现,是Spring用来封装io操作的类;
*这里用来读取spring-beans.xml配置文件
*/
ClassPathResource resource = new ClassPathResource("spring-beans.xml");
/*DefaultListableBeanFactory spring IOC容器的一个实现,
*它包含了基本IOC容器所具有的重要功能,
*spring 中实际上是把DefaultListableBeanFactory作为一个默认的功能完整的IOC容器来用。
*/
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
/*XmlBeanDefinitionReader BeanDefinitionReader的一种实现,用来解析bean的定义并读取,
*XmlBeanDefinitionReader 在这里的作用是读取配置文件中(spring-beans.xml)
*以xml方式定义的BeanDefinition(bean定义);
*并通过回调配置给IOC容器
*/
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
//loadBeanDefinitions XmlBeanDefinitionReader中具体读取bean定义的方法;
reader.loadBeanDefinitions(resource);
//测试用的bean
HelloController hello = (HelloController) beanFactory.getBean("hellocontroller");
FristBeanController frist = (FristBeanController) beanFactory.getBean("fristBeanController");
}
}