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

springboot工作原理以及自动装配原理

一.Spring Boot 的工作原理可以概括为以下几个核心步骤:

1.引导类:

Spring Boot 应用通常以一个主类作为入口,使用 @SpringBootApplication 注解。这个注解包含了三个重要的注解:@Configuration、@EnableAutoConfiguration 和 @ComponentScan。
2.自动装配:

@EnableAutoConfiguration 注解会启用 Spring Boot 的自动装配功能。Spring Boot 会根据应用的类路径和所声明的 Beans,自动配置 Spring 应用所需的组件。
3.条件化配置:

自动装配过程中,Spring Boot 使用一系列的条件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean 等),根据环境和已有 Bean 的状态来决定是否加载特定的配置。
4.组件扫描:

@ComponentScan 注解会指示 Spring 容器扫描指定的包(通常是主类所在包及其子包),以发现并注册标注为 @Component、@Service、@Repository 和 @Controller 等的 Bean。
5.创建和初始化容器:

Spring Boot 会创建一个 ApplicationContext(通常是 AnnotationConfigApplicationContext 或 SpringBootServletInitializer),并在其中注册所有的 Bean 和配置。
6.运行时配置:

Spring Boot 支持通过 application.properties 或 application.yml 文件进行外部化配置,允许开发者在不同环境中灵活调整应用参数。
7.嵌入式服务器:

Spring Boot 支持嵌入式服务器(如 Tomcat、Jetty 或 Undertow),使得开发者可以直接运行 Spring Boot 应用,而无需单独部署在外部服务器上。
8.启动和运行:

一旦上下文和所有的 Bean 创建完毕,Spring Boot 应用就会启动,并开始监听 HTTP 请求或其他事件。

二.Spring Boot 的自动装配原理主要依赖于 Spring Framework 的核心特性和一些特定的注解。以下是其基本原理:

1.@EnableAutoConfiguration:这是 Spring Boot 的核心注解之一。它会触发自动装配的过程。在这个注解的背后,Spring Boot 会加载 META-INF/spring.factories
文件中的配置类,寻找需要自动装配的类。

2.条件化装配:Spring Boot 使用了一系列的条件注解,例如 @ConditionalOnClass、@ConditionalOnMissingBean 等。这些注解可以控制某个 Bean
是否需要被自动装配。例如,只有在类路径中存在某个特定的类时,相关的配置才会生效。

3.配置类:自动装配的逻辑通常会在带有 @Configuration 注解的类中实现,这些类中定义了需要被创建的 Bean。

4.优先级与排序:在进行自动装配时,如果有多个相同类型的 Bean,Spring Boot 还会通过一些机制来决定使用哪个 Bean,例如根据 @Primary 注解或者 @Qualifier 注解来指定优先级。

5.Spring ApplicationContext:当应用启动时,Spring Boot 会创建一个 ApplicationContext,并在其中注册自动装配的 Bean。这是通过读取配置类和条件判断的结果来完成的。


http://www.kler.cn/a/371646.html

相关文章:

  • 利用游戏引擎的优势
  • 简单认识redis - 12 redis锁
  • 日期格式 YYYY-MM-DD HH:mm:ss,SSS 代表什么意思
  • 【HarmonyOS】判断应用是否已安装
  • 随记:MybatisPuls中的抽象类Model和BaseMapper、自定义MetaObjectHandler实现类
  • 基于边缘计算的智能门禁系统架构设计分析
  • 软考高级架构 - 7.3 - 软件架构风格 - 超详细讲解+精简总结
  • Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!
  • 宽带自动获取ip地址好不好:利与弊的深度剖析
  • 【云原生】云原生后端:监控与观察性
  • STM32 SRAM写入16位数据时死机问题
  • 数据分析案例-苹果品质数据可视化分析+建模预测
  • React核心思维模型(一)
  • Linux中Web服务器配置和管理(Apache)
  • 时序动作定位 | CASE:基于聚类的弱监督时间动作定位前景与背景分离研究(ICCV 2023)
  • 关于AI绘画 | Stable Diffusion 技术专栏推荐文章
  • 气膜球幕:沉浸式音乐体验的新境界—轻空间
  • C++中list的使用与实现
  • 在IDEA中运行Mybatis后发现取出的password值为null
  • 地理征服营销与开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的融合创新
  • 06.动态代理设计模式
  • 【GL07】C语言要点
  • 探索PDFMiner:Python中的PDF解析利器
  • Spring三级缓存解决循环依赖?构造方法的循环依赖问题解决(原理、详细过程、面试题)
  • 【容器】容器化详解:提升开发与运维效率的关键技术
  • Java面对对象第七天(实训学习整理资料(六)Java中的面向对象(oop))