BeanFactory接口
用来访问spring容器的root接口。要访问spring容器,需使用spring依赖注入功能,使用BeanFactory接口和它的子接口
特性:
◆Bean的实例化和串联
通常,BeanFactory的实现是使用懒加载的方式,意味着beans只有在我们通过getBean()方法直接调用它们时才进行实例化。实现BeanFactory最常用的api是XMLBeanFactory
package com.zoltanraffai;
import org.springframework.core.io.ClassPathResource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.xml.XmlBeanFactory;
public class HelloWorldApp{
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("beans.xml"));
HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
obj.getMessage();
}
}
ApplicationContext接口
ApplicationContext是spring应用程序中的中央接口,用于向应用程序提供配置信息。它继承了BeanFactory接口,保含BeanFactory的所有功能以及更多功能。主要功能是支持大型业务应用的创建。
特性:
◆Bean initantiation/wiring
◆Bean的实例化/串联
◆自动的beanpostprocessor注册
◆自动beanfactorypostprocessor注册
◆方便的MessageSource访问(i18n)
◆ApplicationEvent的发布
ApplicationContext是预加载,所以每个bean都在ApplicationContext启动后实例化。
package com.zoltanraffai;
import org.springframework.core.io.ClassPathResource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.xml.XmlBeanFactory;
public class HelloWorldApp{
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
}
}
总结
ApplicationContext包含BeanFactory的所有特性,通常推荐使用ApplicationContext。但也有一些限制情形,例如移动应用内存消耗比较严苛,使用轻量级的BeanFactory更合理。然而在大多数企业及应用中,ApplicationContext是你的首选。
本文深入探讨Spring框架中的核心容器BeanFactory与ApplicationContext的区别与联系。详细介绍了BeanFactory作为访问Spring容器的基础接口,其懒加载特性及常见实现XMLBeanFactory。同时,全面解析了ApplicationContext接口,作为BeanFactory的扩展,提供了更多的功能如自动bean postprocessor注册、MessageSource访问等,并强调其预加载特性。
820

被折叠的 条评论
为什么被折叠?



