spring中的BeanFacoty和ApplicationContext

一、顶级Factory-BeanFactory:是所有Factory的父级,是spring 的核心,spring IOC容器通过BeanFactory创建、管理Bean。提供了用于访问Spring IoC容器的根接口。其子类包括:ApplicationContextAutowireCapableBeanFactoryConfigurableApplicationContextConfigurableBeanFactoryConfigurableListableBeanFactoryConfigurableWebApplicationContextHierarchicalBeanFactoryListableBeanFactoryWebApplicationContext。提供了对Bean的一些基本操作包括:getBean(),containsBean()等,最常被使用的是 XmlBeanFactory。BeanFacoty启动时占用资源少,对资料要求比较高的应用首选。

二、ApplicationContext:是BeanFactory的派生,提供了基于应用程序上下文环境去实现BeanFactory中的功能。常用接口包括

  • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。

  • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。

  • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean

ApplicationContext提供:

  • Bean工厂方法,用于访问应用程序组件 继承自ListableBeanFactory
  • 以通用方式加载文件资源的能力。继承自ResourceLoader接口。
  • 将事件发布到已注册的侦听器的功能。继承自ApplicationEventPublisher接口。
  • 解决消息,支持国际化的能力。继承自MessageSource接口。
  • 从父上下文继承。后代上下文中的定义始终优先。这意味着,例如,整个Web应用程序可以使用单个父上下文,而每个servlet都有自己的子上下文,该上下文独立于任何其他servlet的子上下文。

除了标准的BeanFactory 生命周期的能力,ApplicationContext实现检测和调用 ApplicationContextAware豆类以及ResourceLoaderAware, ApplicationEventPublisherAwareMessageSourceAware ----参考来源

BeanFactory和ApplicationContext区别:

     BeanFactory:提供了对容器的最基本实现,创建bean、获取bean。只是获取bean的时候才进行实例化,启动时并不参与实例化,占用资源少,对资源要求高的应用应当首选。

     ApplicationContext:提供了对容器的基本实现之外还提供了其它的机制。在启动容器时便实例化bean(声明了延迟加载除外)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值