Skip to content

构建系统 (Build Systems)

强烈建议你选择一个支持依赖管理且能从 Maven Central 仓库获取产物的构建系统。我们推荐你选择 MavenGradle。虽然也可以让 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 下属的子依赖指定了不匹配的版本,可能会导致 NoSuchMethodErrorClassNotFoundException。这是因为不同的版本之间可能存在破坏性 API 变更。除非你有极强的理由,否则请始终信任 Spring Boot 的版本推荐。

3. 如何查找更多的 Starter?

除了官方列表,Spring 社区非常活跃。许多热门项目(如 MyBatis, Redisson, ShardingSphere)都有自己的 Spring Boot Starter。搜索时建议使用关键字:项目名 + spring boot starter。如果你在 IDE(如 IntelliJ IDEA 或 Eclipse)中安装了相关插件,配置 POM 时输入 spring-boot-starter 也会有自动补全提示。

Based on Spring Framework.