Spring的核心类: BeanFactory, ApplicationContext 笔记241103

68 阅读10分钟

Spring的核心类: BeanFactory, ApplicationContext, ConfigurableApplicationContext, WebApplicationContext, WebServerApplicationContext, ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, XmlWebApplicationContext, AnnotationConfigServletWebServerApplicationContext

在Spring框架中,BeanFactory、ApplicationContext、ConfigurableApplicationContext、WebApplicationContext、WebServerApplicationContext、ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebApplicationContext、AnnotationConfigServletWebServerApplicationContext等概念各自扮演着重要的角色,它们之间既有联系又有区别。以下是对这些概念的详细解释:

  1. BeanFactory 定义:BeanFactory是Spring框架中的基础容器接口,提供了配置框架和基本的功能,主要用于访问Spring容器中的bean。 特点:在BeanFactory中,bean的实例化是延迟的,即只有在第一次获取bean时才会进行实例化。 主要方法:getBean(String beanName),该方法根据bean的名称从容器中返回对应的bean。

  2. ApplicationContext 定义:ApplicationContext是BeanFactory的子接口,提供了更多面向应用的功能,是Spring框架中更高级的容器。 特点:ApplicationContext在初始化时会实例化所有的单例bean,并提供了事件传播、国际化支持、资源访问等高级功能。 主要实现类:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext等。 继承关系:ApplicationContext继承了BeanFactory接口,并扩展了其功能。

  3. ConfigurableApplicationContext 定义:ConfigurableApplicationContext是ApplicationContext的子接口,提供了更多的配置选项和生命周期管理方法。 特点:ConfigurableApplicationContext增加了刷新容器、关闭容器、设置上下文ID等方法,使得应用程序在运行时能够动态地修改和管理应用上下文。 主要方法:refresh()和close(),分别用于重新加载配置和关闭应用程序上下文。

  4. WebApplicationContext 定义:WebApplicationContext是专门为Web应用程序设计的ApplicationContext接口。 特点:WebApplicationContext能够访问Web应用程序的ServletContext对象,允许bean访问Web应用程序的环境信息。此外,它还定义了一些特定于Web应用的bean,如控制器、视图解析器等。 主要实现类:XmlWebApplicationContext和AnnotationConfigWebApplicationContext等。

  5. WebServerApplicationContext 定义:WebServerApplicationContext是实现了ApplicationContext接口的接口,用于创建和管理嵌入式Web容器的生命周期。 特点:WebServerApplicationContext是SpringBoot针对嵌入式Web容器扩展的IOC容器接口,它允许应用程序在运行时动态地管理嵌入式Web容器。 主要方法:getWebServer(),用于获取当前应用的嵌入式Web容器实例。

  6. ClassPathXmlApplicationContext和FileSystemXmlApplicationContext 定义:这两个类都是ApplicationContext接口的实现类,用于从XML配置文件中加载Spring容器。 特点:ClassPathXmlApplicationContext默认从类路径加载配置文件,而FileSystemXmlApplicationContext默认从文件系统中装载配置文件。

    • ClassPathXmlApplicationContext默认从类路径加载配置文件。
    • FileSystemXmlApplicationContext默认从文件系统中装载配置文件。
  7. XmlWebApplicationContext 定义:XmlWebApplicationContext是WebApplicationContext接口的一个实现类。 特点:它使用XML配置文件来定义和配置Web应用程序中的bean。

  8. AnnotationConfigServletWebServerApplicationContext 定义:AnnotationConfigServletWebServerApplicationContext是SpringBoot整合WebMvc场景的IOC容器最终落地实现。 特点:它支持注解驱动的配置方式,能够扫描和注册注解配置类,并创建嵌入式Web容器来支持WebMvc应用程序的运行。 综上所述,这些概念和类在Spring框架中各自扮演着不同的角色,它们共同构成了Spring框架的核心容器体系。通过理解这些概念和类的关系与特点,可以更好地使用Spring框架来开发和管理Java应用程序。

1. BeanFactory

  • 定义:BeanFactory是Spring框架中的基础容器接口,提供了配置框架和基本的功能,主要用于访问Spring容器中的bean。
  • 特点:在BeanFactory中,bean的实例化是延迟的,即只有在第一次获取bean时才会进行实例化。
  • 主要方法:getBean(String beanName),该方法根据bean的名称从容器中返回对应的bean。

2. ApplicationContext

  • 定义:ApplicationContext是BeanFactory的子接口,提供了更多面向应用的功能,是Spring框架中更高级的容器。
  • 特点:ApplicationContext在初始化时会实例化所有的单例bean,并提供了事件传播、国际化支持、资源访问等高级功能。
  • 主要实现类:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext等。
  • 继承关系:ApplicationContext继承了BeanFactory接口,并扩展了其功能。

3. ConfigurableApplicationContext

  • 定义:ConfigurableApplicationContext是ApplicationContext的子接口,提供了更多的配置选项和生命周期管理方法。
  • 特点:ConfigurableApplicationContext增加了刷新容器、关闭容器、设置上下文ID等方法,使得应用程序在运行时能够动态地修改和管理应用上下文。
  • 主要方法:refresh()和close(),分别用于重新加载配置和关闭应用程序上下文。

4. WebApplicationContext

  • 定义:WebApplicationContext是专门为Web应用程序设计的ApplicationContext接口。
  • 特点:WebApplicationContext能够访问Web应用程序的ServletContext对象,允许bean访问Web应用程序的环境信息。此外,它还定义了一些特定于Web应用的bean,如控制器、视图解析器等。
  • 主要实现类:XmlWebApplicationContext和AnnotationConfigWebApplicationContext等。

5. WebServerApplicationContext

  • 定义:WebServerApplicationContext是实现了ApplicationContext接口的接口,用于创建和管理嵌入式Web容器的生命周期。
  • 特点:WebServerApplicationContext是SpringBoot针对嵌入式Web容器扩展的IOC容器接口,它允许应用程序在运行时动态地管理嵌入式Web容器。
  • 主要方法:getWebServer(),用于获取当前应用的嵌入式Web容器实例。

6. ClassPathXmlApplicationContext和FileSystemXmlApplicationContext

  • 定义:这两个类都是ApplicationContext接口的实现类,用于从XML配置文件中加载Spring容器。
  • 特点:ClassPathXmlApplicationContext默认从类路径加载配置文件,而FileSystemXmlApplicationContext默认从文件系统中装载配置文件。
    • ClassPathXmlApplicationContext默认从类路径加载配置文件。
    • FileSystemXmlApplicationContext默认从文件系统中装载配置文件。

7. XmlWebApplicationContext

  • 定义:XmlWebApplicationContext是WebApplicationContext接口的一个实现类。
  • 特点:它使用XML配置文件来定义和配置Web应用程序中的bean。

8. AnnotationConfigServletWebServerApplicationContext

  • 定义:AnnotationConfigServletWebServerApplicationContext是SpringBoot整合WebMvc场景的IOC容器最终落地实现。
  • 特点:它支持注解驱动的配置方式,能够扫描和注册注解配置类,并创建嵌入式Web容器来支持WebMvc应用程序的运行。









Spring框架的核心类代表了其最基本的组件和功能,这些类共同构成了Spring框架的基石。以下是一些关键的Spring核心类及其功能概述:

  1. BeanFactory

    • 是Spring框架的基础容器接口,提供了配置框架和基本的功能。
    • 主要用于访问Spring容器中的bean,是IoC容器的基础。
    • Bean的实例化是延迟的,即只有在第一次获取bean时才会进行实例化。
  2. ApplicationContext

    • 是BeanFactory的子接口,提供了更多面向应用的功能。
    • 在初始化时会实例化所有的单例bean,并提供了事件传播、国际化支持、资源访问等高级功能。
    • 是Spring框架中更高级的容器,通常用于企业级应用开发。
  3. ConfigurableApplicationContext

    • 是ApplicationContext的子接口,提供了更多的配置选项和生命周期管理方法。
    • 增加了刷新容器、关闭容器、设置上下文ID等方法。
    • 允许应用程序在运行时动态地修改和管理应用上下文。
  4. BeanDefinition

    • 封装了Bean的所有属性信息。
    • 当Spring容器启动时,会读取配置文件或扫描注解,解析出各个Bean的配置信息,并将其封装成对应的BeanDefinition对象。
    • Spring容器根据BeanDefinition中的信息,实例化、初始化和配置Bean对象,然后将其放入容器中管理。
  5. DefaultListableBeanFactory

    • 是整个Bean加载的核心部分,是Spring注册及加载Bean的默认实现。
    • 继承了多个接口和类,综合了Bean注册、配置、获取等多种功能。
    • 是Spring容器内部处理Bean注册和管理的核心组件。
  6. BeanFactoryPostProcessor

    • 主要用于给Bean工厂新增BeanDefinition。
    • 在Bean工厂实例化完毕但Bean还没有初始化时运行。
    • 允许在Spring容器创建Bean之前对Bean的配置信息进行修改或增强。
  7. Aware接口

    • 允许Bean意识到其所在的环境。
    • 在Bean实例化后,Spring容器通过回调相应的Aware接口方法来提供一些特定的信息给Bean。
    • 例如,EnvironmentAware接口允许Bean获取Spring容器的环境信息。
  8. InitializingBean和DisposableBean接口

    • InitializingBean:定义了Bean初始化后的方法,允许在Bean初始化后执行一些自定义的初始化逻辑。
    • DisposableBean:定义了Bean销毁前的方法,允许在Bean销毁前执行一些资源释放或清理工作。
  9. BeanPostProcessor

    • 是Bean对象的后置处理器,生命周期在Bean对象初始化前后。
    • 允许在Bean初始化前后对Bean进行一些自定义的处理,如属性注入、代理创建等。
    • 是Spring AOP(面向切面编程)实现的关键组件之一。

这些核心类共同构成了Spring框架的IoC容器体系,为Java应用程序的开发提供了强大的支持和灵活性。通过理解这些类和它们之间的关系,可以更好地掌握Spring框架的使用和扩展方法。









在Spring框架中,BeanFactory、ApplicationContext、ConfigurableApplicationContext、WebApplicationContext、WebServerApplicationContext、ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebApplicationContext、AnnotationConfigServletWebServerApplicationContext等术语分别代表不同的接口和实现类,它们在Spring的IOC(Inversion of Control,控制反转)容器和应用上下文中扮演着重要的角色。以下是对这些术语的详细解释:

1. BeanFactory

  • 定义:BeanFactory是Spring框架中最基础的容器接口,它提供了配置框架和基本的功能,用于访问应用程序中的bean。
  • 主要方法:getBean(String beanName),根据bean名称从容器中返回对应的bean。
  • 特点:BeanFactory在初始化容器时并没有实例化bean,而是在第一次访问到目标bean时才实例化该bean。

2. ApplicationContext

  • 定义:ApplicationContext是BeanFactory的子接口,提供了更多面向应用的功能,如国际化支持、资源访问、事件传播等。

  • 实现类:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext等。

  • 特点

    • ApplicationContext继承了BeanFactory的所有功能,并进行了扩展。
    • ApplicationContext在初始化上下文时会实例化所有的单例bean,而BeanFactory则不会。

3. ConfigurableApplicationContext

  • 定义:ConfigurableApplicationContext是ApplicationContext的子接口,提供了更多的配置选项,允许应用程序在运行时动态地修改和管理应用上下文。
  • 主要方法:refresh()和close(),用于启动、刷新和关闭ApplicationContext。
  • 特点:ConfigurableApplicationContext包含了ApplicationContext的所有功能,并提供了修改bean定义、激活环境、注册shut-down hook等额外的能力。

4. WebApplicationContext

  • 定义:WebApplicationContext是ApplicationContext的子接口,专门为Web应用程序设计。

  • 特点

    • 继承了ApplicationContext的所有功能。
    • 可以访问Web应用程序的ServletContext对象,允许bean访问Web应用程序的环境信息。
    • 可以定义一些特定于Web应用的bean,如控制器(Controller)、视图解析器(ViewResolver)、处理器映射器(HandlerMapping)等。

5. WebServerApplicationContext

  • 定义:WebServerApplicationContext是实现了ApplicationContext的接口,用于创建和管理嵌入式Web容器的生命周期。
  • 主要方法:getWebServer(),返回当前应用的嵌入式Web容器实例。
  • 特点:该接口是SpringBoot针对嵌入式Web容器的特性扩展的IOC容器接口。

6. ClassPathXmlApplicationContext 和 FileSystemXmlApplicationContext

  • 定义:这两个都是ApplicationContext的实现类,用于从XML配置文件中加载ApplicationContext。

  • 特点

    • ClassPathXmlApplicationContext默认从类路径加载配置文件。
    • FileSystemXmlApplicationContext默认从文件系统中装载配置文件。

7. XmlWebApplicationContext

  • 定义:XmlWebApplicationContext是WebApplicationContext的实现类,用于从XML配置文件中加载Web应用程序的上下文。

8. AnnotationConfigServletWebServerApplicationContext

  • 定义:AnnotationConfigServletWebServerApplicationContext是SpringBoot整合WebMvc场景的IOC容器最终落地实现。

  • 特点

    • 注解驱动的(AnnotationConfig)。
    • 基于Servlet环境的。
    • 支持嵌入式Web容器的应用上下文。

这些接口和实现类共同构成了Spring框架的IOC容器和应用上下文体系,为Java EE应用提供了强大的配置和管理能力。在实际开发中,可以根据项目的需求选择合适的接口和实现类来构建应用程序。