Spring 中 ApplicationContext 、WebApplicationContext 和 BeanFactory 比较

SpringBeanWeb 框架配置管理  

BeanFactory 是 Bean 的工厂接口,用于生成管理不同类型的 java Bean 对象。

ApplicationContext 是建立在BeanFactory基础之上,提供了更多面向应用的功能。


根据两者的用途,我们可以进行简单的划分:
  BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;
  ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。


以下是两种创建 Bean 的不同方法:

Java代码  
  1. //用BeanFactory创建Bean实例  
    public static void main(String args[]){  
       Resource res=new ClassPathResource("com/beanfactory/beans.xml");  
       BeanFactory bf=new XmlBeanFactory(res);  
       Car car=(Car)bf.getBean("car");//得到一个Car Bean实例  
    }  
  2. //用ApplicationContext创建Bean实例 
    public static void main(String args[]){  
       ApplicationContext application = new ClassPathXmlApplicationContext(beans.xml"));  
       Car car=(Car)application.getBean("car");  
    } 
两者在加载Bean实例时的区别
BeanFactory被初始化的时候,并没有加载所有的单实例Bean对象,而是等到调用getBean()方法的时候才初始化相应的Bean实例对象。
ApplicationContext被初始化的时候就已经检查所有的Bean对象并初始化,当调用getBean()方法的时候,直接可以从缓存中取出相应的Bean实例对象。
ApplicationContext这种加载方式特点:

在刚开始加载ApplicationContext对象的时候,会出现一点延迟,但以后加载每一个Bean对象的时候会很快。而且在刚开始的时候就对Bean对象进行配置校验,以防止加载出错。

WebApplicationContext是实现ApplicationContext接口的子类 。是专门为WEB应用准备的,它允许从相对于Web根目录的路径中加载配置文件完成初始化工作。从 WebApplicationContext中可以获取ServletContext引用,整个Web应用上下文对象将作为属性放置在ServletContext中 以便Web应用环境可以访问Spring上下文。
同时 WebApplicationContext还为Bean提供了三个新的作用域,request、session和globalsession。而在非web环境下,Bean只有singleton和prototype两种作用域。
WebApplicationContext的初始化是通过WebApplicationContextUtils类中的getApplicationContext(ServletContext sc)方法实现的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值