一、spring-boot-starter 与 spring-boot-starter-web 的差异
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
| 依赖 | 作用 |
|---|---|
| spring-boot-starter | Spring Boot 核心基础能力 |
| spring-boot-starter-web | 构建 Web / REST 服务能力(包含 Tomcat + MVC) |
二、 spring-boot-starter 是最基础启动器,包含:
主要包括
spring-core
spring-context
spring-beans
spring-aop
spring-boot-autoconfigure
logging(默认 logback)
作用
✔ 支持 IOC
✔ 支持依赖注入
✔ 支持自动配置
✔ 支持日志系统
不包含
❌ 不包含 Web
❌ 不包含 Tomcat
❌ 不包含 MVC
适用场景
工具类项目
后台任务调度
CLI程序
Kafka / MQ 消费者
非 HTTP 服务
三、spring-boot-starter-web 是 Web 场景启动器
它包含:
1️⃣ spring-boot-starter
2️⃣ spring-web
3️⃣ spring-webmvc
4️⃣ Jackson(JSON)
5️⃣ 嵌入式 Tomcat
依赖结构(简化版):
spring-boot-starter-web
├── spring-boot-starter
├── spring-web
├── spring-webmvc
├── jackson
└── tomcat
四、功能差异对比
| 功能 | starter | starter-web |
|---|---|---|
| IOC | ✔ | ✔ |
| 自动配置 | ✔ | ✔ |
| 日志 | ✔ | ✔ |
| REST接口 | ❌ | ✔ |
| @RestController | ❌ | ✔ |
| 嵌入式Tomcat | ❌ | ✔ |
| JSON序列化 | ❌ | ✔ |
总结
- 如果是web项目,就只需要引入 starter-web 而不需要引入 starter。
因为 starter-web 包含了 starter - 如果只是做后台任务/消息系统,只需要引入 starter,而不需要web
本文为原创内容,作者:闲鹤,原文链接:https://blog.uwenya.cc/1641.html,转载请注明出处。