Spring中的ApplicationContext与BeanFactory

来源:互联网 发布:js调用点击事件 编辑:程序博客网 时间:2024/05/16 03:33

Spring中的ApplicationContext与BeanFactory

ApplicationContext与BeanFactory的概述

Spring容器是用来维护对象的创建及对象之间的依赖关系,它本质便是一个对象工厂即BeanFactory,这是一个最原始的接口。
随着技术的发展BeanFactory的诸多弊端被暴露出来,在高版本的Spring框架中BeanFactory被弃用,取而代之的便是ApplicationContext。
ApplicationContext继承于BeanFactory,通过扩展它提供了比BeanFactory更强悍的功能。

ApplicationContext与BeanFactory的加载

在Bean的加载方式上:BeanFactory采用延迟加载,而ApplicationContext则实时加载。
BeanFactory:
  1. 采用延迟加载提高了Spring容器的启动速度,但Spring的响应速度较慢。
  2. 因为Bean的创建是在请求时才被创建降低了内存的使用。
  3. 一方面当某个Bean存在问题时,如果不调用它时是不会影响到系统的正常运行。另一方面,我们没办法发现Spring容器的潜在隐患。
ApplicationContext:
  1. 采用实时加载导致Spring的启动速度较慢,但Spring的响应速度较快。
  2. 因为Bean的创建是事先完成的所以会占用较大的内存空间。
  3. Spring启动时便创建所有需要创建的Bean,可以检验系统的潜在隐患。

ApplicationContext与BeanFactory的功能

BeanFactory:
  1. 加载配置文件,维护对象的创建及对象之间的依赖关系。
ApplicationContext:
  1. ApplicationContext是继承于BeanFactory,具备BeanFactory的所有功能。
  2. 支持国际化。
  3. 资源访问。
  4. 事件传递。

ApplicationContext与BeanFactory的创建

<span style="white-space:pre"></span>
//ApplicationContext的创建方式之一ApplicationContext context = new ClassPathXmlApplicationContext("config//spring.xml");//ApplicationContext的创建方式之二ApplicationContext context = new FileSystemXmlApplicationContext("src//config//spring.xml");//BeanFactory的创建方式BeanFactory factory = new XmlBeanFactory(new ClassPathResource("config//spring.xml"));

ApplicationContext与BeanFactory的选择

当然是用ApplicationContext了。

0 0
原创粉丝点击