Spring Boot Starter 汇总
各类 Starter 作用、适用场景、依赖关系,用于项目选型参考
Spring Boot 的整体结构、自动装配原理与各模块在体系中的位置,见 Spring Boot 主脉络。
选定 Starter 后的项目组织方式与分层落地实践,见 企业级项目实践指导手册。
一、Spring Boot 基础概念
Spring Boot 基于 Spring Framework 开发,不是替代 Spring,而是简化 Spring 开发,核心依靠三大特性实现开发简化:
1. 自动配置(Auto-configuration)
根据项目引入的依赖自动装配 Spring Bean,无需大量 XML/JavaConfig 配置;
2. 起步依赖(Starters)
预整合一组具备版本兼容的依赖包,统一管理版本,解决版本冲突,即本文档核心内容;
3. 内嵌服务器
可内置 Tomcat/Jetty/Undertow/Netty,支持打包为可执行 Jar,直接通过 java -jar 运行。
Spring Framework vs Spring Boot 简要区分
| 特性 | Spring Framework | Spring Boot |
|---|---|---|
| 定位 | 底层基础框架,提供 IoC、AOP、MVC 等核心能力 | 基于 Spring Framework 的开发脚手架,简化搭建与配置 |
| 配置方式 | 大量手动 XML / JavaConfig | 自动配置 + 约定优于配置,极少配置 |
| 依赖管理 | 手动引入各个依赖,自行维护版本,易产生冲突 | Starter 统一管控兼容版本 |
| 部署方式 | 多打包为 WAR,部署至外部容器 | 优先打包可执行 Jar,内置 Web 容器 |
| 适用场景 | 高度定制化、老旧项目改造 | 微服务、REST API、快速开发独立应用 |
Spring Framework 的核心设计(IoC 容器、AOP、Bean 生命周期、事务传播等)见 Spring Framework 核心体系。
tips:所有功能性 Starter 都会间接传递依赖
spring-boot-starter,无需重复引入。
二、核心基础 Starter
spring-boot-starter
基础核心启动器
- 包含:自动配置基础能力、日志框架 SLF4J + Logback、外部化配置(yml/properties 解析)
- 说明:绝大多数 Starter 都会传递依赖该包;非 Web/Webflux 项目(定时任务、RPC客户端)直接引入此 Starter
三、Web & 响应式 Web Starter
spring-boot-starter-web
传统阻塞式 Web 应用(MVC / RESTful API)
- 组件:Spring MVC、内嵌 Tomcat、Jackson JSON 序列化、JSR303 参数校验
- 替换容器:可排除 tomcat,引入 Jetty / Undertow
- 适用:普通接口服务、SpringMVC 传统Web项目
Java Web 的规范体系(Servlet/JSP/WebSocket)、设计模式、技术演进路线及 Web 容器机制,见 Java Web 技术体系。
spring-boot-starter-webflux
响应式非阻塞 Web 应用
- 组件:Spring WebFlux、内置 Netty、响应式 JSON 处理
- 适用:高并发 IO 场景、响应式编程项目
tips :web 和 webflux 不要同时引入,二者编程模型互斥
四、数据访问 Starter
spring-boot-starter-data-jpa
关系型数据库 ORM 方案
- 组件:Spring Data JPA、Hibernate、HikariCP 连接池
- 适用:习惯 ORM 面向对象操作数据库,需要简化 CRUD
spring-boot-starter-data-jdbc
轻量 JDBC 方案
- 组件:Spring JDBC 抽象、JdbcTemplate,不含 JPA / Hibernate
- 适用:不想使用ORM,原生SQL操作关系库
spring-boot-starter-data-r2dbc
响应式关系型数据库访问
- 基于 R2DBC 非阻塞规范,替代阻塞 JDBC
- 适用:WebFlux 响应式项目操作 MySQL/PostgreSQL 等关系库
spring-boot-starter-data-redis
Redis 缓存/键值数据库
- 组件:Spring Data Redis,默认使用 Lettuce(响应式客户端)
- 适用:缓存、分布式锁、限流、消息队列
spring-boot-starter-data-mongodb
MongoDB 文档数据库
- 组件:Spring Data MongoDB
- 适用:NoSQL文档存储业务
spring-boot-starter-data-elasticsearch
Elasticsearch 搜索引擎
- 组件:Spring Data Elasticsearch
- 适用:全文检索、日志检索
spring-boot-starter-data-neo4j
Neo4j 图数据库
- 适用:关系图谱、社交网络、路径分析场景
spring-boot-starter-data-cassandra
Cassandra 分布式列存储数据库
- 适用:大规模时序数据、高可用分布式存储
五、消息中间件 Starter
spring-boot-starter-amqp
RabbitMQ 客户端(遵循 AMQP 协议)
- 集成 Spring AMQP,简化交换机、队列、生产者消费者开发
spring-boot-starter-kafka
Apache Kafka 消息队列
- 集成 Spring for Apache Kafka,支持消息收发、批量消费
spring-boot-starter-activemq
Apache ActiveMQ 消息中间件
spring-boot-starter-artemis
Apache Artemis(新一代ActiveMQ)
六、其他 Starter
spring-boot-starter-test
测试启动器
- JUnit、MockMvc、AssertJ、Mockito 等测试套件
- 所有项目单元测试必备
spring-boot-starter-validation
参数校验(JSR380)
提示:spring-boot-starter-web 内置携带;纯非web项目做参数校验需要手动引入
spring-boot-starter-actuator
应用监控端点
- 提供健康检查、运行指标、环境信息、日志端点;运维、微服务监控必备
spring-boot-starter-security
安全框架 Spring Security
- 认证、授权、会话管理、防跨站攻击等
spring-boot-starter-oauth2-resource-server
OAuth2 资源服务(搭配Security使用)
spring-boot-starter-oauth2-client
OAuth2 客户端
spring-boot-starter-quartz
定时任务 Quartz 框架
区别:SpringBoot自带简易 @Scheduled;复杂定时任务(持久化、动态任务)使用Quartz
spring-boot-starter-batch
Spring Batch 批处理框架
适用:大批量数据同步、离线任务
spring-boot-starter-mail
邮件发送支持
集成 JavaMail,快速实现发送邮件
spring-boot-starter-thymeleaf
服务端模板引擎
传统 SpringMVC 页面渲染(前后端分离项目一般不需要)
spring-boot-starter-freemarker
FreeMarker 模板引擎
spring-boot-starter-groovy-templates
Groovy 模板引擎