构建系统 (Build Systems)
强烈建议你选择一个支持依赖管理且能从 Maven Central 仓库获取产物的构建系统。我们推荐你选择 Maven 或 Gradle。虽然也可以让 Spring Boot 配合其他系统(如 Ant)工作,但官方支持力度相对有限。
1. 依赖管理 (Dependency Management)
Spring Boot 的每一个发行版都会维护一份经过严选的依赖清单。在实际开发中,你不需要在构建配置中为清单内的依赖指定版本,Spring Boot 会自动帮你管理。当你升级 Spring Boot 时,这些依赖也会以一致的方式同步升级。
提示
如果有特殊需求,你仍然可以手动指定版本来覆盖 Spring Boot 的推荐配置。
此严选清单包含了所有可与 Spring Boot 配合使用的 Spring 模块,以及一系列第三方库。这份清单以 BOM (spring-boot-dependencies) 的形式提供。
警告
每个 Spring Boot 版本都关联了一个特定的 Spring Framework 基础版本。强烈建议你不要手动指定 Spring Framework 的版本,以免产生兼容性问题。
2. Maven 与 Gradle
有关如何通过这两种主流工具使用 Spring Boot,请参阅各自的官方插件文档:
3. Starters (起步依赖)
Starters 是一系列便捷的依赖描述符,你可以将其包含在应用中。它们就像是“一站式商店”,通过一个依赖就能引入开发特定类型应用所需的所有 Spring 及相关技术,而无需你四处寻找示例代码并复制粘贴一大堆依赖配置。
例如,如果你想开始使用 Spring 和 JPA 进行数据库访问,只需在项目中引入 spring-boot-starter-data-jpa 即可。
Starter 的命名规范
- 官方 Starter: 统一命名为
spring-boot-starter-*,其中*代表特定类型的应用(如web,test)。 - 第三方 Starter: 不应以
spring-boot开头,而应以项目名称开头。例如,一个名为thirdparty的第三方项目,其 Starter 通常命名为thirdparty-spring-boot-starter。
常用官方 Starter 概览
| 名称 | 描述 |
|---|---|
spring-boot-starter | 核心 Starter,包含自动配置支持、日志和 YAML |
spring-boot-starter-web | 使用 Spring MVC 构建 Web(含 RESTful)应用的 Starter,默认使用 Tomcat |
spring-boot-starter-data-jpa | 使用 Spring Data JPA 和 Hibernate 进行数据访问 |
spring-boot-starter-test | 用于测试应用的 Starter,包含 JUnit Jupiter, Hamcrest 和 Mockito |
spring-boot-starter-actuator | 提供生产就绪特性(如监控和管理)的 Starter |
spring-boot-starter-security | 用于使用 Spring Security 的 Starter |
补充教学
1. 为什么 BOM 可以省略版本号?
在 Maven 中,这是通过 <dependencyManagement> 实现的。当你在 POM 中指定了 spring-boot-starter-parent 时,它已经预定义了成百上千个 Jar 包的版本。当你声明依赖但省略 <version> 时,Maven 会向上查找并自动使用 Parent 中定义的那个版本。这确保了你的所有组件都是互相经过兼容性测试的。
2. 避免“版本地狱”
如果你在一个 Spring Boot 项目中手动为某个 Starter 下属的子依赖指定了不匹配的版本,可能会导致 NoSuchMethodError 或 ClassNotFoundException。这是因为不同的版本之间可能存在破坏性 API 变更。除非你有极强的理由,否则请始终信任 Spring Boot 的版本推荐。
3. 如何查找更多的 Starter?
除了官方列表,Spring 社区非常活跃。许多热门项目(如 MyBatis, Redisson, ShardingSphere)都有自己的 Spring Boot Starter。搜索时建议使用关键字:项目名 + spring boot starter。如果你在 IDE(如 IntelliJ IDEA 或 Eclipse)中安装了相关插件,配置 POM 时输入 spring-boot-starter 也会有自动补全提示。