为什么会出现这个springboot,他出现的背景是为了解决什么问题
1.整合依赖管理的机制
了解springboot之前,我认为是要先去了解mave
springboot是解决maven相关的问题在代码工程的实践
不管是前端还是后端
在代码走向工程化以后。
都是先引入依赖,后面对依赖进行配置
前端引入技术栈是在nodejs里面,在main.js里面进行配置之类的
后端引入技术栈是在mavenl里面,在config包下对类进行配置
🗃️ Spring Boot对Maven的整合
Spring Boot 深度整合了 Maven,让你不必再为版本冲突和复杂的依赖声明头疼。
- 父级依赖与版本管理:新建项目时
spring-boot-starter-parent就定义好了最佳实践与版本清单。之后你引入依赖时无需再指定版本号,由父级依赖统一管理。 - 起步依赖 (“Starter”):这是对常用依赖的封装,其本质是一个“依赖集合”。例如只要引入
spring-boot-starter-web,就会通过依赖传递把所有相关库(如 Spring MVC、Jackson 等)一次性引入。
✨ Spring Boot整合的Spring机制
Spring Boot 在 Spring Framework 基础上,通过一系列核心机制,让各种技术组件变得“即插即用”。
- 自动配置 (Auto-Configuration):这是其最强大的部分。
@SpringBootApplication注解会触发@EnableAutoConfiguration,扫描并加载预定义的配置类。同时,配置类使用@ConditionalOnMissingBean这样的“条件化”注解,智能判断配置是否生效。 - 外部化配置:Spring Boot 允许在
application.properties或application.yml中通过server.port等配置项覆盖自动配置的默认值。 - 生产就绪特性 (Actuator):集成
spring-boot-starter-actuator后,可通过 HTTP 端点(如/health、/metrics)监控应用的健康状况、性能指标等。 - 默认整合的其他功能:Spring Boot 还自动整合了 JMX 管理、Logback 日志等基础设施。
这里要提一嘴:spring-boot-starter远不止包含了spring-core这些 Spring 核心模块,它是一个完整的“开箱即用”工具包。
它作为所有 Spring Boot 应用的基础,为我们提前准备了自动配置引擎、完善的日志系统、便捷的 YAML 配置解析等必备能力。这正是你之前体验到的“只引入一个 Starter,IoC 容器就能直接使用”的原因。
📦spring-boot-starter的核心组成
下面是spring-boot-starter引入的几类核心内容:
| 功能类别 | 提供的核心能力 |
|---|---|
| 😄 Spring 核心框架 | 提供 IoC、DI 及spring-core、spring-context等 Spring 基础设施。 |
| 🔩 自动配置引擎 | 引入spring-boot-autoconfigure,支持依赖和配置文件的自动装配。 |
| 📝 日志系统 | 通过spring-boot-starter-logging(默认基于 Logback)提供日志抽象与实现。 |
| ⚙️ 配置文件解析 | 引入snakeyaml,支持用更简洁的.yml格式(或application.properties)定义配置。 |
| 🛠️ 基础工具链 | 包含spring-boot核心包,提供SpringApplication启动类等关键工具。 |
🎯 知识串联:IoC、自动配置与 YAML 的关系
现在,我们可以把之前聊的内容和这张表连起来,构建一个清晰的调用逻辑:
- 启动入口:
main方法调用SpringApplication.run()。 - 容器创建:
spring-boot-starter包内的逻辑创建并启动 IoC 容器。 - 自动化处理:自动配置引擎介入,根据类路径下的依赖自动配置组件。
- 配置读取:
snakeyaml解析你写在application.yml中的定制化属性(如数据源地址)。 - 组件注册:最后,所有这些自动配置的组件,包括
MyService,都会被注册到 IoC 容器中,完成整个启动流程。