Spring(12) BeanFactory 和 ApplicationContext 区别

一、BeanFactory 和 ApplicationContext 区别?

BeanFactoryApplicationContext 是 Spring 框架中两个重要的容器接口,它们之间有以下区别:

  1. 功能:
    • BeanFactory 是 Spring 框架的基础接口,提供了最基本的 IOC 容器功能。它的主要作用是管理和提供应用程序中的 Bean 实例,通过管理 Bean 的生命周期,实现依赖注入和控制反转等功能。
    • ApplicationContext 是 BeanFactory 的子接口,具有更多的扩展和增强共嗯那个。ApplicationContext 除了具备 BeanFactory 的功能外,还提供了国际化、资源管理、事件发布和处理、AOP 和事务管理等高级功能。
  2. 初始化方式:
    • 在 Spring 的启动过程中,BeanFactory 是懒加载的,只有当需要获取 Bean 时才会进行实例化和初始化。
    • ApplicationContext 在容器启动时就会进行实例化和初始化,提前创建和管理所有的 Bean 实例。
  3. 配置方式:
    • BeanFactory 可以通过编程的方式进行配置,手动创建容器并根据需要注册和配置 Bean。
    • ApplicationContext 可以通过多种方式进行配置,包括 XML 配置文件、Java 注解和 JavaConfig 等方式,更加灵活和方便。

在 Spring 的启动过程中,使用 ApplicationContext 比 BeanFactory 更加常见。通常,Spring Boot 会使用 ApplicationContext 进行应用程序的启动和管理。在启动过程中,Spring Boot 会通过扫描注解和加载配置文件等方式,创建 ApplicationContext 实例,并且进行初始化和自动配置。一旦 ApplicationContext 初始化完成,Spring Boot 会使用它来管理和协调应用程序中的各个组件,并提供相关的功能和服务。


二、既然 Spring Boot 中使用的是 ApplicationContext 进行应用程序的启动和管理,那么 Spring Boot 会用到 BeanFactory 吗?

会用到。尽管 Spring Boot 主要使用 ApplicationContext 进行应用程序的启动和管理,但它仍然内部使用 BeanFactory 来支持其核心功能。

在 Spring Boot 的启动过程中,会创建一个根据类路径和配置文件自动配置的 ApplicationContext 实例。这个 ApplicationContext 实例实际上是一个 BeanFactory 的实现,并且拥有 BeanFactory 的功能。在创建 ApplicationContext 实例时,Spring Boot 会将必要的配置文件加载到 BeanFactory 中,并根据这些配置来创建和管理 Bean 实例。

整理完毕,完结撒花~ ?