spring boot starter 是轻量级 maven 坐标,仅声明依赖、复用 bom 版本、触发自动配置,不包含业务代码;如 spring-boot-starter-data-redis 一行引入即自动装配 redis 相关依赖与配置。

Spring Boot 通过 Starter 机制把第三方组件的引入和版本管理变成一件“声明即可用”的事——你只需要写一行依赖,背后自动完成依赖拉取、版本匹配、传递依赖注入和基础配置装配。
Starter 是什么,不是什么
Starter 本身不包含业务代码或实现逻辑,它是一个轻量级的 Maven 坐标(xxx-spring-boot-starter),本质是依赖描述符 + 自动配置触发器。它不做功能开发,只做三件事:
- 声明该场景所需的所有核心依赖(如 Web 场景含
spring-webmvc、tomcat-embed-core、jackson-databind) - 复用
spring-boot-dependencies中预设的版本号,避免手动指定 - 内置
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,告诉 Spring Boot “哪些自动配置类该被加载”
一站式引入:一行依赖,整套能力就位
以集成 Redis 为例,传统方式要查文档找 spring-data-redis、lettuce-core、commons-pool2 等多个依赖,还要确认兼容版本;而 Spring Boot 提供了官方 Starter:
<dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-data-redis</artifactid></dependency>
引入后,Maven 自动解析出完整依赖树,包括:
- Spring Data Redis 核心模块
- Lettuce 客户端(默认)及其 Netty 依赖
- 连接池 commons-pool2(已适配 Spring Boot 版本)
- 自动配置类
RedisAutoConfiguration和LettuceConnectionConfiguration
无需手写 RedisTemplate 配置类,只要在 application.yml 中填好 host 和 port,Bean 就自动注册进容器。
依赖版本仲裁:靠 BOM 和就近原则兜底
版本仲裁不是魔法,而是基于两层机制协同工作:
-
BOM(Bill of Materials)控制:父 POM
spring-boot-starter-parent继承自spring-boot-dependencies,后者用<dependencymanagement></dependencymanagement>声明了上百个常用库的“推荐版本”,比如redis.clients:jedis:4.4.3、io.lettuce:lettuce-core:6.3.1 -
就近优先覆盖:若你在项目
pom.xml中显式写了<version>6.2.0</version>或通过<properties><lettuce.version>6.2.0</lettuce.version></properties>指定,就会覆盖 BOM 中的默认值
这种设计既保证开箱即用的稳定性,又保留定制灵活性——比如老系统必须用 MySQL Connector/J 5.1.x,只需加一条 property 即可,不影响其他依赖。
第三方 Starter 也能享受同样待遇
只要遵循命名规范({name}-spring-boot-starter)并正确声明 spring-boot-dependencies 为 BOM,第三方 Starter 同样能接入 Spring Boot 的版本仲裁体系。例如:
-
mybatis-spring-boot-starter会从 Spring Boot BOM 中读取mybatis、mybatis-spring、hikari-cp的兼容版本 -
aliyun-sms-spring-boot-starter可在内部dependencyManagement引入阿里云 SDK,并复用 Spring Boot 的日志、配置绑定等基础设施
关键是它的 pom.xml 必须 import Spring Boot 的 BOM,或自身提供兼容的 dependencyManagement 块,否则无法参与统一版本仲裁。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











