美文网首页
Spring BeanFactory与ApplacationCo

Spring BeanFactory与ApplacationCo

作者: sharp367 | 来源:发表于2021-03-02 21:07 被阅读0次

    BeanFacotry

    BeanFactory提供了一种先进的配置机制来管理任何种类bean(对象),这种配置机制考虑到任何一种可能的存储方式。

    ApplicationContext

    1.建立在BeanFactory,具有BeanFactory的所有功能和行为
    2.MessageSource, 提供国际化的消息访问
    3.资源访问,如URL和文件
    4.事件传播
    5.载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层

    不同点

    BeanFactory是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常。
    ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext。

    参考官方文档

    https://docs.spring.io/spring/docs/5.3.0-SNAPSHOT/spring-framework-reference/core.html#beans-beanfactory

    特性 BeanFactory ApplicationContext
    Bean instantiation/wiring(bean 实例化/装配) yes yes
    Integrated lifecycle management (集成生命周期管理) no yes
    Automatic BeanPostProcessor registration(自动 BeanPostProcessor 注册) no yes
    Automatic BeanFactoryPostProcessor registration(自动 BeanFactoryPostProcessor 注册) no yes
    Convenient MessageSource access (for internalization) (便捷的 MessageSource 访问( i18n) ) no yes
    Built-in ApplicationEvent publication mechanism(ApplicationEvent 发送) no yes

    关系

    (1)BeanFactory提供了配置框架和基本的功能
    (2)ApplicationContext建立在BeanFactory之上,并增加了其他的功能
    (3)一般来说,ApplicationContext是BeanFactory的完全超集, 任何BeanFactory功能和行为的描述也同样被认为适用于ApplicationContext

    我们该用BeanFactory还是ApplicationContent

    延迟实例化的优点:(BeanFactory)
    应用启动的时候占用资源很少;对资源要求较高的应用,比较有优势;
    不延迟实例化的优点: (ApplicationContext)

    1. 所有的Bean在启动的时候都加载,系统运行的速度快;
    2. 在启动的时候所有的Bean都加载了,我们就能在系统启动的时候,尽早的发现系统中的配置问题
    3. 建议web应用,在启动的时候就把所有的Bean都加载了。(把费时的操作放到系统启动中完成)
      [这段内容转自blog:https://blog.csdn.net/yjc0403/article/details/84831532]

    相关文章

      网友评论

          本文标题:Spring BeanFactory与ApplacationCo

          本文链接:https://www.haomeiwen.com/subject/aqbsohtx.html