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

【深入理解 SpringBoot3】第一弹:SpringBoot3 快速入门

一、SpringBoot是什么

SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术。

特性:

  1. 直接嵌入Tomcat、Jetty 或 Undertow(无需部署war包)

  2. 提供可选的 starter(场景启动器) 简化应用的整合

  3. 实现按需的自动配置Spring以及第三方库(约定大于配置):application.properties

  4. 提供生产级别的特性:如监控指标、健康检测、外部化配置:可以通过修改配置文件实现

  5. 简化部署:打包为可执行的 jar 包

二、依赖管理机制

  1. 通过导入 starter 场景启动器,场景启动器会自动将该场景的所有核心依赖导入进来

  2. 由于每个 SpringBoot 项目都有一个父项目spring-boot-starter-parent,parent的父项目是spring-boot-dependencies(父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了)

  3. 可以实现在导入依赖的时候声明版本

三、自动配置机制

  1. 导入starter-web:导入了web开发场景(场景启动器会默认导入相关场景的所有依赖:starter-jsonstarter-tomcat、springmvc),同时在每个场景启动器中都会引入一个spring-boot-starter,核心场景启动器。核心场景启动器会引入spring-boot-autoconfigure(囊括了所有场景的所有配置)。只要这个包下的所有类都能生效,那么相当于SpringBoot官方写好的整合功能就生效。

    1. SpringBoot默认却扫描不到 spring-boot-autoconfigure下写好的所有配置类。(这些配置类给我们做了整合操作),默认只扫描主程序所在的包

  2. 主程序@SpringBootApplication由三个注解组成@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

    1. SpringBoot默认只能扫描自己主程序所在的包及其下面的子包,扫描不到 spring-boot-autoconfigure包中官方写好的配置类

    2. @EnableAutoConfiguration作为SpringBoot 开启自动配置的核心,它是由@Import(AutoConfigurationImportSelector.class)提供功能,并批量给容器中导入组件。这些组件包括142个配置类,这142个配置类均来自于spring-boot-autoconfigureMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件指定的

    3. 这142个配置类并不会都生效,每一个自动配置类,都有条件注解@ConditionalOnxxx,只有条件成立,才能生效

  3. xxxxAutoConfiguration自动配置类通过@EnableConfigurationProperties(ServerProperties.class), 负责给容器中的每个Bean对象绑定一些核心参数,而这些核心参数都来自于xxxProperties,而xxxProperties由是和配置文件进行绑定的。此时就可以实现配置文件的修改关联核心组件的底层参数的修改


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

相关文章:

  • 基于@Scheduled注解(静态配置)实现定时任务
  • 【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • Spring MVC 请求与响应
  • WebAssembly实践,性能也有局限性
  • 【TCP/IP、HTTP等网络协议】
  • Kubernetes高级应用之-重启策略
  • 【愚公系列】《高效使用DeepSeek》032-育儿知识获取
  • 记录一次部署k3s后,服务404 page not found,nginx显示正常
  • [数据结构]1.时间复杂度和空间复杂度
  • Win10批处理脚本操作注册表教程
  • Android Wrapper Gradle 下载问题:Could not install Gradle distribution from...
  • Lua语言的嵌入式安全
  • mysql慢查询日志
  • 【操作系统】Docker如何使用-续
  • 关于瑞芯微开发工具(RKDevTool)刷机下载Boot失败原因的研究
  • VUE3项目VITE打包优化
  • leetcode3.无重复字符的最长字串
  • G 2024hubei province 学习到的内容
  • 各类神经网络学习:(四)RNN 循环神经网络(下集),pytorch 版的 RNN 代码编写
  • AI+数字孪生:能碳管理中心的智能预测与动态优化