springboot中ApplicationContext接口体系简单了解

当SpringBoot以war包运行时,获取applicationContext的方法 当SpringBoot以war包运行时,获取applicationContext的方法 最近接手别人的一个Spring Boot后台接口的项目的时候,发现其业务逻辑层,也就是与数据库连接的那一块代码没用使用现在主流的MyBatis等,用的还是较为原始的JdbcTemplate,其中某接口的业务逻辑层如下。 public boolean update_addbind(BindBean bb){ ... 阅读详情

在 Spring Boot 和 Spring 框架中,ApplicationContext 和它的一些子接口或实现类(如 ConfigurableApplicationContext、ConfigurableWebServerApplicationContext 和 ServletWebServerApplicationContext)用来处理应用的上下文对象,以及管理 Bean 的生命周期和配置。它们之间的主要区别和联系如下:


1. ApplicationContext

ApplicationContext 是 Spring 的核心接口之一,是 Spring IoC 容器的最高级接口,定义了 Spring 应用上下文的基本机制和功能。

特点:
  • 它是一个只读接口,主要用来获取各种 Bean 定义和管理 Bean 的生命周期。
  • 提供了访问容器中 Bean 的基本功能,比如通过 getBean() 获取 Bean,发布事件,访问环境等。
  • 应用上下文针对不同的类型有不同实现,比如 FileSystemXmlApplicationContext,ClassPathXmlApplicationContext 等。
核心功能:
  • Bean 容器管理。
  • 事件发布和订阅机制。
  • 国际化支持。
  • 环境和属性管理。

2. ConfigurableApplicationContext

ConfigurableApplicationContext 是 ApplicationContext 的子接口,扩展了对应用上下文的配置和管理功能。它是应用上下文的“可配置版本”。

特点:
  • 增加了上下文的启动(refresh())、关闭(close())、注册关闭钩子(registerShutdownHook())等功能。
  • 支持通过 setId()、setParent() 等方法进行上下文配置。
核心功能:
  • 提供了 refresh() 方法,用于刷新或启动容器;在 Spring Boot 中,通过这个方法来加载应用的 Bean 定义。
  • 提供了 close() 方法,用于关闭应用上下文,释放资源。
联系:

ConfigurableApplicationContext 通常会在使用 Spring Boot 或 Spring 应用程序时被用作主上下文。


3. ConfigurableWebServerApplicationContext

ConfigurableWebServerApplicationContext 是 ConfigurableApplicationContext 的一个更具体的子接口,专为基于 Web 环境的 Spring 应用上下文而设计。

特点:
  • 主要用于 Spring Web 应用场景。
  • 添加了 Web 服务器特定的接口,比如对嵌入式 Web 服务器(如 Tomcat、Jetty)的支持。
  • 定义了 Web 应用上下文的特有属性和方法,例如 getServerNamespace() 和 setServerNamespace(),用于指定 Web 服务端命名空间。
核心功能:
  • 整合嵌入式 Web 服务器的配置与生命周期管理。
  • 用于处理基于 Web 的 Spring 应用的上下文。
联系:

ConfigurableWebServerApplicationContext 是一个高度 Web 专用的 ApplicationContext 子接口,其实现类之一是 ServletWebServerApplicationContext。


4. ServletWebServerApplicationContext

ServletWebServerApplicationContext 是 Spring Boot 提供的默认实现类,用于运行基于 Servlet 的嵌入式 Web 服务器(如 Tomcat)的 Spring 应用上下文。

特点:
  • 是 ConfigurableWebServerApplicationContext 的具体实现。
  • 是 Spring Boot Web 应用的上下文的核心类。
  • 负责管理嵌入式 Web 容器的生命周期(比如启动、停止等)。
  • 适用于基于 Servlet 和 Spring Web 的应用程序上下文。
核心功能:
  • 启动嵌入式 Web 服务器。
  • 在嵌入式或外部容器中加载 Spring Web 应用。
  • 提供与 Servlet 容器相关的上下文功能。
  • 用于 Spring Boot 的大多数 Web 项目场景。
联系:

在 Spring Boot Web 项目中,当设置了依赖(如 spring-boot-starter-web)时,SpringApplication 会默认创建并使用 ServletWebServerApplicationContext,实现 Web 应用的上下文逻辑。


它们的层次结构与关系

以下是它们之间的结构关系,表明了从通用到特化的实现链:

ApplicationContext(顶级接口)
  └── ConfigurableApplicationContext(可配置应用上下文)
        └── ConfigurableWebServerApplicationContext(可配置的 Web 服务器上下文,Web 特化)
               └── ServletWebServerApplicationContext(Servlet 专用实现类,Spring Boot 默认使用)

举例说明

  1. 如果是一个普通的 Spring 应用,你可能只使用 ConfigurableApplicationContext 或直接使用更顶层的 ApplicationContext 来管理上下文。

  2. 如果是一个 Spring Boot Web 应用,Spring Boot 会自动使用 ServletWebServerApplicationContext,通过它启动嵌入式 Web 容器(如 Tomcat)。


总结

接口/类作用上下文特性
ApplicationContextSpring 应用上下文核心接口提供 Bean 容器的基本功能
ConfigurableApplicationContext可配置的应用上下文提供启动、刷新、关闭能力
ConfigurableWebServerApplicationContextWeb 专用应用上下文接口增加对嵌入式 Web 容器的支持
ServletWebServerApplicationContext默认 Servlet Web 上下文实现管理嵌入式 Web 容器

ServletWebServerApplicationContext 是 Spring Boot Web 项目中最常用的上下文实现类,位于框架设计的最底层,自动完成了嵌入式服务器初始化和 Servlet 上下文绑定的工作。

零差云控关节模组:EtherCAT+preempt-RT实现微秒级同步 关节模组是协作机器人、外骨骼与高精度服务机器人的核心执行单元,其性能瓶颈常在于多轴运动的时序一致性与实时闭环能力。实现‘零差’同步依赖于确定性通信(如EtherCAT)与硬实时操作系统支持(如Linux preempt-RT),前者保障指令与状态在微秒级时间戳下全局对齐,后者消除内核调度抖动,使PID控制、电流采样、编码器反馈等关键路径具备纳秒级可预测性。技术价值体现在相位偏差<±0.01°、端到端控制周期稳定1ms、连续运行温漂<±1.2℃等工程指标,广泛应用于力控装配、康复训练、远程遥操作等对动态精度与 阅读详情

相关推荐

Labview_DQMH框架学习1--浅析

本文主要结合一个相对容易理解的例子,阐述 DQMH 框架的工作原理,希望对初学者有一定的帮助。

hrbeuxn的博客 3049

SpringBoot获取ApplicationContext的方法

ApplicationContext是Spring中的Bean工厂,可以用来获取Spring容器中的各种bean组件,注册监听事件,加载资源文件等功能 当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean 创建实现ApplicationContextAware接口的静态类 package com....

我的博客 3906

LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测,包含插件部署)

LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测,包含插件部署)

ocean00008899的博客 1285

SpringBoot中获取ApplicationContext的三种方式

SpringBoot中获取ApplicationContext的三种方式 ApplicationContext是什么? 简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能。 Application Context获取的几种方式 1 直接使用Autowired注入 @Component public class Book1 { @Aut...

. 5万+

手把手教你用Ubuntu Base 20.04打造轻量级ARM开发板根文件系统(附常见问题解决)

本文详细介绍了如何基于Ubuntu Base 20.04 LTS构建轻量级ARM开发板根文件系统,涵盖环境准备、镜像制作、跨架构配置、软件包定制及常见问题解决。通过实战指南,开发者可快速掌握ARM架构下的根文件系统构建技巧,优化系统性能并解决部署中的典型问题。

gin88的博客 210

基于Ultralytic实现多路摄像头目标检测

基于Ultralytic实现多路摄像头目标检测前面的文章分享了单路摄像头画面的YOLO目标检测,这篇文章主要分享一下多路摄像头画面的实时YOLO目标检测。测试环境在Windows系统下进行。

qq_57674776的博客 940

SpringBoot中获取ApplicationContext的方法

一、需求描述 在使用SpringBoot框架开发的过程中,我们有时候需要通过ApplicationContext获取一些bean。 这时候,就需要我们先获取ApplicationContext。 那么什么是ApplicationContext呢? 简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能。 常见的有ClassPathApplicationContext、AnnotationConfigApplicationContext他们都继承了Applic

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 1万+

YOLOv11改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附创新修改后的C3k2DWRSeg)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv11中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPsYOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备。

Snu77的博客 4185

springboot获取applicationcontext

题记: 使用springboot之前,我们通过ClassPathXmlApplicationContext加载spring xml配置文件来获取applicationcontext,使用springboot后,由于不存在xml文件,故该种方式已经不能使用 在官方文档中介绍,可通过实现ApplicationRunner或者CommandLineRunner在springaplication启动后,立即执行其中的一些代码,做初始化操作,如果存在多个实现类,可使用@Order注解设置其启动顺序...

养只狗名叫猫 3019

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

强化学习从基础到进阶-常见问题和面试必知必答[7]:深度确定性策略梯度DDPG算法、双延迟深度确定性策略梯度TD3算法详解

丨汀、的博客 511

CentOS7安装OpenSSL1.1.1s

CentOS7安装OpenSSL1.1.1s

Bertram的博客 733

SpringBoot获取ApplicationContext

ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等。获取运行时环境获取beanNames的功能获BeanFactory的功能集成消息解析器事件监听资源解析器。...

m0_67390379的博客 1148

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 238

springboot applicationContext null

问题1 springboot applicationContext null 上代码 我的代码 private static ApplicationContext applicationContext; public static IdentityApplicationService identityApplicationService() { return (IdentityApplicationService) applicationContext.getBean

wuqingsssss的博客 3746

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot核心接口ApplicationContext

1.SpringBoot核心接口ApplicationContext ApplicationContext是一个核心接口: <span style="background-color:#dadada"><span style="color:#1f0909"><span style="color:#770088">public</span> <span style="color:#770088">interface</span> &

jainszhang的博客 602

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringBoot 五种获取ApplicationContext的方式

之前每次想要获取Spring上下文【ApplicationContext】的时候,都去现查方案。本文针对获取Spring ApplicationContext的方式做了梳理,总结。 1. 概念 ApplicationContext是什么? 简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能 2. 获取ApplicationContext的方式 2.1. 创建工具类 通过此工具类,可以方便的获取bean组件, 获取配置信息等 import

penriver的博客 2万+

SpringBoot ApplicationContext分析

ApplicationContext代表IOC容器,在SpringIOC容器中读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化后才可以从IOC容器里获取Bean实例并使用。

qq_37436172的博客 1933

【SpringBoot】applicationContext.getBeansOfType(class)获取某一接口所有实现类,应用于策略模式

从上面的源码上我们可以看出来这个方法能返回一个接口的全部实现类(前提是所有实现类都必须由 Spring IoC 容器管理从上面的代码上(下面案例中工厂类有) ,Map 中的 String 的值是各个实现类的名称 busModeServiceImpl、trainModeServiceImpl(首字母小写),Map 中的 value 是各个 key 对应的策略实现类/*** 查询交通方式编码* @return 编码*//*** 查询交通方式的费用,单位:分* @return 费用*/

yuxiangdeming的博客 3762

【图解Springboot】ApplicationContext的变化

SpringBoot——ApplicationContext的变化

qgnczmnmn的博客 528

springboot启动的applicationContext的类型选择

首先,一共有三种类型AnnotationConfigServletWebServerApplicationContext,AnnotationConfigReactiveWebServerApplicationContext,AnnotationConfigApplicationContext。 springboot会根据webApplicationType的值来确定你加载哪一个applicationContext /** * Strategy method used to create t.

公瑾的专栏 1685

SpringBoot 使用ApplicationContext 及 getbean

第一种方式:容器启动加载时设置 public class WittApplication { public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(WittApplication.class, args); ...

wittdong的博客 1516

小记:SpringBoot在普通类中使用@Autowired注解引用ApplicationContext对象报NullPointerException异常

SpringBoot在普通类中使用@Autowired注解引用ApplicationContext对象报NullPointerException异常,解决方法: 普通类(SampleClazz)实现ApplicationContextAware接口的setApplicationContext方法,将ApplicationContext对象传递到普通类: public class SampleCla...

MecanZhou的博客 4676

SpringBoot中使用ApplicationContext获取bean对象

编写一个ApplicationContextFactory工厂类 public class ApplicationContextFactory{ private static ApplicationContext applicationContext = null; public static void setApplicationContext(ApplicationContext ap...

fangwh的博客 7232
上一篇: Tomcat 服务器项目部署教程
下一篇: WordPress原生中文精品主题推荐(二):手把手教你搭建个人网站
JavaObjects
博客等级 码龄7年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值