首页 > 其他分享 >ApplicationContext和BeanFactory

ApplicationContext和BeanFactory

时间:2023-03-05 16:55:36浏览次数:38  
标签:ApplicationContext 容器 spring BeanFactory BeanFactoryPostProcessor bean

ApplicationContext和BeanFactory

BeanFactory

  • BeanFactory是spring的IOC容器的核心,Spring 使用 BeanFactory 来实例化、配置和管理 Bean。
  • 常用的BeanFactory核心实现有:DefaultListableBeanfactory、XmlBeanFactory、ApplicationContext等,最常用的就是XmlBeanFactory,根据xml文件中的配置加载bean。

ApplicationContext

  • 继承自接口BeanFactory,不仅包含BeanFactory中的所有功能,还拓展了很多功能:
    • 继承MessageSource,因此支持国际化
    • 统一的资源文件访问方式。(常用:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebApplicationContext)
    • 强大的事件机制event
    • 自动注册BenaPostProcessor、BeanFactoryPostProcessor等

两者对比

  • BeanFactory采用懒加载的方式注入bean,也就是只有用到bean的时候,容器才会去加载它,可能出现某个bean的某个属性没有注入,导致使用的时候报错。
    而ApplicationContext在容器启动的时候,就加载好了所有的bean。不足之处就是占用内存空间,当bean数量很多时,容器启动较慢。
  • BeanFactory和ApplicationContext都支持BeanPostProcessor和BeanFactoryPostProcessor,不同的是BeanFactory需要手动注册,而ApplicationContext是自动注册。
  • beanFactory主要是面对与 spring 框架的基础设施,面对 spring 自己。而 Applicationcontex 主要面对与 spring 使用的开发者。基本都会使用 Applicationcontex 并非 beanFactory 。

BeanPostProcessor和BeanFactoryPostProcessor

BeanFactoryPostProcessor

  • 实现该接口,可以在 Spring 创建 bean 之前修改 bean 的定义属性。也就是说,Srping 允许 BeanFactoryPostProcessor 在容器实例化 bean 之前读取配置元数据,并可以根据需要进行修改。例如可以把 bean 的 Scope 从 singleton 改为 prototype ,也可以把 property 的值给修改掉。另外可以同时配置多个 BeanFactoryPostProcessor,并通过 order 属性来控制

BeanPostProcessor

  • BeanPostProcessor 可以在 spring 容器实例化 bean 之后,在执行 bean 的初始化方法前后,添加一些自己的处理逻辑。 这里说的初始化方法,指的是以下两种:
    • 1.bean 实现 了 InitializingBean 接口,对应的方法为 afterPropertiesSet 。
    • 2.在 XML 文件中定义 bean 的时候,<bean>标签有个属性叫做 init-method,来指定初始化方法。

标签:ApplicationContext,容器,spring,BeanFactory,BeanFactoryPostProcessor,bean
From: https://www.cnblogs.com/yliunyue/p/17180919.html

相关文章

  • spring中BeanFactory和FactoryBean
    spring中BeanFactory和FactoryBeanBeanFactoryBeanFactory是spring的IOC容器中的核心接口,是负责生产和管理bean的一个工厂。主要职责是:实例化、定位、配置应用程序中的......
  • 【Spring】BeanFactory
    (181条消息)BeanFactory简单介绍_Lin_Dong_Tian的博客-CSDN博客_beanfactory 一、 BeanFactoryBeanFactory,以Factory结尾,表示它是一个工厂类(接口), 它负责生产......
  • 【Spring】BeanFactory和FactoryBean有哪些区别
      区别说实话,他俩除了名字比较像以外,好像没有其他共同点了。「BeanFactory和FactoryBean有哪些区别?」BeanFactory是一个最基础的IOC容器,提供了依赖查找,依......
  • 2-1-4.spring源码--AbstractApplicationContext
    Spring源码–AbstractApplicationContext概述江湖上流传这样一个传说,只要把spring的refresh()搞明白,spring就学的七七八八了。今天来盘一下refresh方法,这个这是一个困难点了......
  • Servlet22 - BeanFactory
    BeanFactory-IOC-DI依赖/耦合软件系统中,层与层间存在依赖关系,称为耦合设计原则:高内聚低耦合--层内组成代码高度聚集,层间关系低耦合(理想情况-零耦合)如何实现低......
  • BeanFactory的总结
    BeanFactoryBeanFactory是Spring容器中的一个基本类也是很重要的一个类是Spring容器中的一个基本类也是很重要的一个类,在BeanFactory中可以创建和管理Spring容器中的Bean,它......
  • BeanFactory的总结
    BeanFactoryBeanFactory是Spring容器中的一个基本类也是很重要的一个类是Spring容器中的一个基本类也是很重要的一个类,在BeanFactory中可以创建和管理Spring容器中的Bean,......
  • ApplicationContext体系
    ApplicationContext是Spring容器针对应用层开放的接口。相对于BeanFactory体系,仅仅起着容器的作用,需要借助AnnatatedBeanDefinitionReader手动注册类对象,或者ClassPathBe......
  • BeanFactory体系介绍
    BeanFactory体系BeanFactory是Spring最核心的功能,它就是我们常说的SpringIoC容器。BeanFactory体系下包含许多接口,它们分别代表SpringIoC容器的不同功能:BeanFactory......
  • org.springframework.context.ApplicationContextException: Unable to start embedde
    前言swagger引入后一直报错,尝试多个解决后没办法Causedby:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'httpPutFormConte......