Spring工厂类结构
有两个工厂接口
- BeanFactory
- AcctionContext
ApplicationContext接口:
- 每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
- 它就相当于一个大工厂,提供了根据配置文件中的id属性值,获取对象
- 两个实现类:
-
ClassPathXmlApplication类,从类的根路径下加载配置文件(企业项目开发中,使用较多)
-
FileSystemXmlApplication类,从文件系统(磁盘)上加载配置文件
从工厂中获取对象
- applicationContext.xml配置文件
<bean id="customerDaoImpl" class="com.dao.impl.CustomerDaoImpl"></bean>
- 获取对象
@Test
public void save(){
//创建ApplicationContext的实现类
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取对象
CustomerDaoImpl customerDaoImpl = (CustomerDaoImpl) context.getBean("customerDaoImpl");
//调用方法
customerDaoImpl.saveCustomer();
}
BeanFactory(过时)
- 采用延迟创建的思想
因为是之前硬件还没发达, 资源匮乏, 才需要延迟创建
- spring原始接口.针对原始接口的实现类功能较为单一
- BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象
BeanFactory和ApplicationContext区别
- BeanFactory是工厂顶层接口
- ApplicationContext是BeanFactory子接口
- 创建对象时间点不一样:
BeanFactory创建对象:什么时候使用,什么时候创建。采用延迟创建的思想
ApplicationContext创建对象:加载配置文件,立即创建。采用立即创建的思想