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

发布于:2025-03-26 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、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由是和配置文件进行绑定的。此时就可以实现配置文件的修改关联核心组件的底层参数的修改