BeanFactory顾名思义是Bean工厂的意思,采用的是工厂设计模式。Bean工厂的神圣职责就是负责Bean实例的创建、Bean实例之间依赖关系的装配及Bean实例的分发。这是Spring的核心技术之一,作为工厂,"看图生产"是必不可少的,同理,我们必须为Bean工厂提供一份"生产图纸"用于指导生产,这就是前面提到的Spring的配置文件(如applicationContext.xml),Spring并未规定配置文件的命名及数量,起什么名字都行,多个配置文件也可以。Spring容器在实例化时就会装载这些配置文件,并进行"看图生产"。
基于"面向接口编程"的指导思想,BeanFactory被定义为接口,XmlBeanFactory是BeanFactory接口最常用的实现类。XmlBeanFactory通过装载指定的XML配置文件实例化BeanFactory容器。例如:
- //通过装载指定的XML配置文件实例化BeanFactory容器
- Resource res = new FileSystemResource("c:/applicationContext.xml");
- BeanFactory factory = new XmlBeanFactory(res);
- //从Bean工厂容器中获取名为"userAction"的UserAction实例
- userAction = (UserAction)factory.getBean("userAction");
BeanFactory容器实例化之后,我们就可以使用getBean方法从BeanFactory容器中获取装配好的Bean实例了。
Spring开发团队在设计Spring时,考虑到一些受限资源的应用场合,譬如PDA设备上的Java应用等,故特意将BeanFactory容器尽可能地精简,以减少资源的消耗。但对于那些需要国际化支持、Bean事件发布与监听的应用来讲,BeanFactory显然有点力不从心了。于是通过继承BeanFactory接口,又创建了ApplicationContext与WebApplicationContext等子接口,用以满足Java EE应用的开发。