楼层: 首页/ 软件技术/ Spring Boot 3.5/ 起步依赖 Starters:版本仲裁的魔法
4

起步依赖 Starters:版本仲裁的魔法

Starters & Dependency Management

以前用 Spring,你得自己查:Spring 5.3 配哪个版本的 Hibernate?Jackson 哪个版本兼容?现在不用了——Starter 是一组"经过验证的依赖清单",你只引一个 starter,里面所有传递依赖的版本都由 spring-boot-dependencies 统一仲裁,不会出现版本冲突。

Starter干什么用
spring-boot-starter-webSpring MVC + 内嵌 Tomcat + Jackson,做 REST API。
spring-boot-starter-data-jpaSpring Data JPA + Hibernate + HikariCP,操作数据库。
spring-boot-starter-data-redisRedis 客户端 Lettuce + Spring Data Redis。
spring-boot-starter-securitySpring Security,认证授权。
spring-boot-starter-validationBean Validation(Hibernate Validator),参数校验。
spring-boot-starter-testJUnit 5 + Mockito + AssertJ + MockMvc,测试全家桶。
spring-boot-starter-actuator监控端点,健康检查、指标。
spring-boot-starter-aopAOP + AspectJ。
本章面试题 · 第 4 章(Starters)

1.(概念题)starter 到底是什么?为什么一个 starter 就能把一堆依赖拉进来?

查看答案

答案:starter 本质就是一个"依赖清单"——它自己不写代码,只是在 pom 里把某类功能需要的所有依赖(及其兼容版本)列出来。引入 starter = 一次性引入一整套经过版本仲裁的依赖。解析:版本仲裁靠 spring-boot-dependencies 的 BOM,所有版本都在那里统一管理,你不用写版本号。

2.(排错题)为什么我在 starter 里指定了 MySQL 驱动版本,最终生效的却是另一个版本?

查看答案

答案:因为 spring-boot-dependencies 的 BOM 仲裁优先级最高,你自己写的版本会被它覆盖(除非你在 dependencyManagement 里显式指定)。解析:想改版本,要么改 BOM 版本,要么在自己 pom 的 dependencyManagement 里强制指定。