Spring 作为一种IOC容器最大的目的就是降低组件与组件之间的依赖关系。而BeanFactory作为整个Spring IOC容器的核心,使用了一种统一的方法来装配所有的应用对象,通过Java的反射机制和依赖注入(Dependency Injection)来实现这一装配过程,使受之管理的对象无需知道Spring的存在(受管对象甚至不用import 任何Spring的class),同时也降低了组件间的依赖程度,同时受管对象的生命周期由BeanFactory来统一管理,开发者就不用实现大量的自制的工厂Singleton。
在Spring中,BeanFactory
是IoC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖.BeanFactory
提供了配制框架及基本功能,而ApplicationContext
则增加了更多支持企业核心内容的功能。ApplicationContext
完全由BeanFactory
扩展而来,因而BeanFactory
所具备的能力和行为也适用于ApplicationContext
。ApplicationContext继承BeanFactory
注:以下那些受Spring IOC容器即BeanFactory控制管理的对象简称bean对象
一. BeanFactory
作为整个Spring IOC容器核心Interface BeanFacotry被放在包 org.springframework.beans.factory中,这是一个非常简单的接口,如果Spring现有的BeanFactory的实现无法满足你的要求(这种情况应该不多J),你可以很容易创建自己的一个实现。
Spring IoC容器的实例化非常简单,如下面的例子:
Resource resource = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ClassPathResource resource = new ClassPathResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"applicationContext.xml", "applicationContext-part2.xml"}); // of course, an
ApplicationContext
is just aBeanFactory
BeanFactory factory = (BeanFactory) context;