当前位置: 首页 > news >正文

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

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应用提供了强大的配置和管理能力。在实际开发中,可以根据项目的需求选择合适的接口和实现类来构建应用程序。









springboot中的XmlWebApplicationContext

在Spring Boot的框架中,XmlWebApplicationContext是一个相对传统Spring框架中更常用的概念,但在Spring Boot的自动化配置和注解驱动的上下文中,其直接使用的频率有所降低。不过,理解XmlWebApplicationContext仍然对于深入理解Spring框架及其Web应用上下文(WebApplicationContext)的管理机制非常重要。以下是对XmlWebApplicationContext在Spring(包括Spring Boot)环境中的详细解析:

一、定义与位置

XmlWebApplicationContext是Spring Framework中的一个重要类,位于org.springframework.web.context.support包中。它是AbstractRefreshableWebApplicationContext的实现,专门用于在Web应用程序中从XML配置文件加载Spring bean定义。

二、主要功能

  1. XML配置加载XmlWebApplicationContext可以从指定的XML配置文件加载beans,这些配置文件通常位于Web应用的WEB-INF目录下。
  2. Web环境支持:作为WebApplicationContext的实现,它适配于Web环境,能够提供与HTTP请求和Servlet相关的上下文环境。
  3. 生命周期管理:负责管理Web应用的生命周期,包括初始化和关闭操作。
  4. 事件传播:支持事件的发布和监听,使得Web应用能够进行事件驱动的编程。

三、关键方法

  • setConfigLocation(String configLocation):设置XML配置文件的位置。
  • getServletContext():返回关联的ServletContext,可以用来访问Servlet环境资源。
  • refresh():刷新Web应用程序上下文,重新加载bean定义并初始化所有beans。
  • setId(String id):设置上下文的唯一标识符。

四、在Spring Boot中的应用

尽管Spring Boot倡导使用基于注解的配置和Java配置类来减少XML配置的使用,但在某些场景下(如维护老旧项目或特殊需求),仍然可能需要使用XmlWebApplicationContext

在Spring Boot中,如果你需要使用XmlWebApplicationContext来加载XML配置文件,可以通过以下方式实现:

  1. 创建XML配置文件:在src/main/resourcessrc/main/webapp/WEB-INF目录下创建XML配置文件,如applicationContext.xml
  2. 配置Spring Boot应用:通过编程方式或application.properties/application.yml配置文件来指定XML配置文件的位置,并创建XmlWebApplicationContext实例。不过,在Spring Boot中更常见的是通过@ImportResource注解来导入XML配置文件。

例如,在Spring Boot的启动类或配置类上添加@ImportResource注解:

@SpringBootApplication
@ImportResource("classpath:applicationContext.xml")
public class MySpringBootApplication {public static void main(String[] args) {SpringApplication.run(MySpringBootApplication.class, args);}
}

五、注意事项

  • 在使用XmlWebApplicationContext时,需要确保XML配置文件的路径正确无误。
  • Spring Boot鼓励使用基于注解的配置和Java配置类,因此在使用XmlWebApplicationContext时需要权衡其必要性。
  • 在Spring Boot的自动化配置环境中,手动创建和管理XmlWebApplicationContext实例可能会增加应用的复杂性。

综上所述,XmlWebApplicationContext在Spring Boot中仍然是一个有用的工具,但需要根据具体场景和需求来决定是否使用。在大多数情况下,Spring Boot提供的自动化配置和注解驱动的方式已经足够满足开发需求。


























http://www.mrgr.cn/news/64499.html

相关文章:

  • Shiro权限刷新
  • 谷歌浏览器怎么设置网页自动刷新
  • leetcode224:基本计算器
  • Python酷库之旅-第三方库Pandas(193)
  • 自定义规则配置教程
  • 慢sql优化和Explain解析
  • Go 语言循环语句
  • Python酷库之旅-第三方库Pandas(191)
  • C++线程异步
  • 使用Vite构建现代化前端应用
  • 不同出版社的作者排版
  • C语言 | Leetcode C语言题解之第530题二叉搜索树的最小绝对差
  • 构建工具-webpack和vite笔记
  • 读数据工程之道:设计和构建健壮的数据系统26数据建模
  • 线程同步---条件变量
  • 整理 【 DBeaver 数据库管理工具 】的一些基础使用
  • 使用TypeORM进行数据库操作
  • 6.2、实验二:默认路由
  • SQLI LABS | Less-26 GET-Error Based-All Your SPACES And COMMENTS Belong To Us
  • 【毫米波雷达(五)】车载毫米波雷达SDA售后标定流程
  • YOLOv6-4.0部分代码阅读笔记-yolo_lite.py
  • 01 DSA-- 二叉树
  • springboot 自动装配和bean注入原理及实现
  • C++ | Leetcode C++题解之第528题按权重随机选择
  • 【CSS in Depth 2 精译_056】8.4 CSS 的新特性——原生嵌套(Nesting)+ 8.5 本章小结
  • C语言 | Leetcode C语言题解之第528题按权重随机选择