构建系统
强烈建议您选择一个支持依赖管理并且能够使用发布到 Maven Central 仓库的工件的构建系统。我们建议您选择 Maven 或 Gradle。虽然可以让 Spring Boot 与其他构建系统(例如 Ant)一起工作,但它们并不是特别受支持。
依赖管理
Spring Boot 的每个版本都提供了一个它支持的依赖项精选列表。实际上,您无需在构建配置中为这些依赖项提供版本号,因为 Spring Boot 会为您管理这些版本。当您升级 Spring Boot 本身时,这些依赖项也会以一致的方式升级。
如有需要,您仍然可以指定一个版本并覆盖 Spring Boot 的推荐版本。
每个 Spring Boot 的发布版本都与 Spring Framework 的一个基础版本相关联。我们强烈建议您不要指定其版本。
Maven
要了解如何在 Maven 中使用 Spring Boot,请参阅 Spring Boot 的 Maven 插件文档:
Gradle
要了解如何在 Gradle 中使用 Spring Boot,请参阅 Spring Boot 的 Gradle 插件文档:
Ant
可以使用 Apache Ant + Ivy 来构建 Spring Boot 项目。spring-boot-antlib
这个 “AntLib” 模块也可用于帮助 Ant 创建可执行的 JAR 文件。
要声明依赖项,一个典型的 ivy.xml
文件看起来像以下示例:
<ivy-module version="2.0">
<info organisation="org.springframework.boot" module="spring-boot-sample-ant" />
<configurations>
<conf name="compile" description="everything needed to compile this module" />
<conf name="runtime" extends="compile" description="everything needed to run this module" />
</configurations>
<dependencies>
<dependency org="org.springframework.boot" name="spring-boot-starter"
rev="${spring-boot.version}" conf="compile" />
</dependencies>
</ivy-module>
一个典型的 build.xml
文件如下所示:
<project
xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
<property name="spring-boot.version" value="3.4.2" />
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext]" />
</target>
<target name="classpaths" depends="resolve">
<path id="compile.classpath">
<fileset dir="lib/compile" includes="*.jar" />
</path>
</target>
<target name="init" depends="classpaths">
<mkdir dir="build/classes" />
</target>
<target name="compile" depends="init" description="compile">
<javac srcdir="src/main/java" destdir="build/classes" classpathref="compile.classpath" />
</target>
<target name="build" depends="compile">
<spring-boot:exejar destfile="build/myapp.jar" classes="build/classes">
<spring-boot:lib>
<fileset dir="lib/runtime" />
</spring-boot:lib>
</spring-boot:exejar>
</target>
</project>
如果你不想使用 spring-boot-antlib
模块,请参阅“操作指南”中的不使用 spring-boot-antlib 从 Ant 构建可执行归档文件部分。
入门
Starter 是一组便捷的依赖描述符,你可以将其包含在你的应用程序中。通过使用 Starter,你可以一站式获取所有所需的 Spring 及相关技术,而无需在示例代码中搜索并手动复制粘贴大量的依赖描述符。例如,如果你想开始使用 Spring 和 JPA 进行数据库访问,只需在你的项目中引入 spring-boot-starter-data-jpa
依赖即可。
这些启动器包含了许多依赖项,可以帮助你快速启动和运行项目,并提供了一致且受支持的可传递依赖项管理集。
Spring Boot 在 org.springframework.boot
组下提供了以下应用程序启动器:
表 1. Spring Boot 应用启动器
名称 | 描述 |
---|---|
spring-boot-starter | 核心启动器,包含自动配置支持、日志记录和 YAML 配置 |
spring-boot-starter-activemq | 使用 Apache ActiveMQ 的 JMS 消息传递入门 |
spring-boot-starter-amqp | 使用 Spring AMQP 和 Rabbit MQ 的入门指南 |
spring-boot-starter-aop | 使用 Spring AOP 和 AspectJ 进行面向切面编程的入门指南 |
spring-boot-starter-artemis | 使用 Apache Artemis 的 JMS 消息传递入门 |
spring-boot-starter-batch | Spring Batch 入门指南 |
spring-boot-starter-cache | 使用 Spring Framework 缓存支持的入门指南 |
spring-boot-starter-data-cassandra | 使用 Cassandra 分布式数据库和 Spring Data Cassandra 的入门指南 |
spring-boot-starter-data-cassandra-reactive | 使用 Cassandra 分布式数据库和 Spring Data Cassandra Reactive 的入门指南 |
spring-boot-starter-data-couchbase | 使用 Couchbase 面向文档的数据库和 Spring Data Couchbase 的入门指南 |
spring-boot-starter-data-couchbase-reactive | 使用 Couchbase 面向文档的数据库和 Spring Data Couchbase Reactive 的入门指南 |
spring-boot-starter-data-elasticsearch | 使用 Elasticsearch 搜索和分析引擎以及 Spring Data Elasticsearch 的入门指南 |
spring-boot-starter-data-jdbc | Spring Data JDBC 入门指南 |
spring-boot-starter-data-jpa | 使用 Spring Data JPA 和 Hibernate 的入门指南 |
spring-boot-starter-data-ldap | 适用于 Spring Data LDAP 的入门指南 |
spring-boot-starter-data-mongodb | 使用 MongoDB 面向文档的数据库和 Spring Data MongoDB 的入门指南 |
spring-boot-starter-data-mongodb-reactive | 使用 MongoDB 面向文档数据库和 Spring Data MongoDB Reactive 的入门指南 |
spring-boot-starter-data-neo4j | 使用 Neo4j 图数据库和 Spring Data Neo4j 的入门指南 |
spring-boot-starter-data-r2dbc | 使用 Spring Data R2DBC 的入门指南 |
spring-boot-starter-data-redis | 使用 Spring Data Redis 和 Lettuce 客户端集成 Redis 键值数据存储的入门指南 |
spring-boot-starter-data-redis-reactive | ## 使用 Spring Data Redis Reactive 和 Lettuce 客户端连接 Redis 键值数据存储的入门指南 |
spring-boot-starter-data-rest | 这是一个使用 Spring Data REST 和 Spring MVC 暴露 Spring Data 仓库的入门项目。 |
spring-boot-starter-freemarker | 使用 FreeMarker 视图构建 MVC Web 应用程序的入门指南 |
spring-boot-starter-graphql | 用于构建 Spring GraphQL 应用程序的入门指南 |
spring-boot-starter-groovy-templates | 使用 Groovy 模板视图构建 MVC Web 应用程序的入门指南 |
spring-boot-starter-hateoas | 使用 Spring MVC 和 Spring HATEOAS 构建基于超媒体的 RESTful Web 应用程序的入门指南 |
spring-boot-starter-integration | 使用 Spring Integration 的入门指南 |
spring-boot-starter-jdbc | 使用 HikariCP 连接池的 JDBC 入门指南 |
spring-boot-starter-jersey | 使用 JAX-RS 和 Jersey 构建 RESTful Web 应用程序的入门工具。作为 spring-boot-starter-web 的替代方案。 |
spring-boot-starter-jooq | 用于使用 jOOQ 访问 SQL 数据库的入门项目。作为 spring-boot-starter-data-jpa 或 spring-boot-starter-jdbc 的替代方案。 |
spring-boot-starter-json | 用于读取和写入 JSON 的入门指南 |
spring-boot-starter-mail | 使用 Java Mail 和 Spring Framework 的电子邮件发送支持的入门指南 |
spring-boot-starter-mustache | 使用 Mustache 视图构建 Web 应用程序的入门指南 |
spring-boot-starter-oauth2-authorization-server | Spring Authorization Server 功能使用入门 |
spring-boot-starter-oauth2-client | Spring Security OAuth2/OpenID Connect 客户端功能入门指南 |
spring-boot-starter-oauth2-resource-server | Spring Security 的 OAuth2 资源服务器功能入门指南 |
spring-boot-starter-pulsar | 使用 Spring 进行 Apache Pulsar 开发的入门指南 |
spring-boot-starter-pulsar-reactive | 开始使用 Spring for Apache Pulsar Reactive |
spring-boot-starter-quartz | Quartz 调度器入门指南 |
spring-boot-starter-rsocket | 用于构建 RSocket 客户端和服务器的入门模板 |
spring-boot-starter-security | Spring Security 入门指南 |
spring-boot-starter-test | 用于测试 Spring Boot 应用程序的入门工具包,包含 JUnit Jupiter、Hamcrest 和 Mockito 等库。 |
spring-boot-starter-thymeleaf | 使用 Thymeleaf 视图构建 MVC Web 应用程序的入门指南 |
spring-boot-starter-validation | 使用 Hibernate Validator 进行 Java Bean 验证的入门指南 |
spring-boot-starter-web | 用于构建 Web 应用程序(包括 RESTful 应用程序)的入门工具,使用 Spring MVC。默认使用 Tomcat 作为嵌入式容器。 |
spring-boot-starter-web-services | Spring Web Services 使用入门 |
spring-boot-starter-webflux | 使用 Spring Framework 的 Reactive Web 支持构建 WebFlux 应用的入门指南 |
spring-boot-starter-websocket | 使用 Spring Framework 的 MVC WebSocket 支持构建 WebSocket 应用程序的入门指南 |
除了应用程序启动器外,以下启动器可用于添加 生产就绪 功能:
表 2. Spring Boot 生产级启动器
最后,Spring Boot 还包含了以下 starter,如果你想排除或替换特定的技术方面,可以使用它们:
表 3. Spring Boot 技术启动器
名称 | 描述 |
---|---|
spring-boot-starter-jetty | 用于将 Jetty 作为嵌入式 Servlet 容器的启动器。作为 spring-boot-starter-tomcat 的替代方案 |
spring-boot-starter-log4j2 | 用于使用 Log4j2 进行日志记录的启动器。作为 spring-boot-starter-logging 的替代方案 |
spring-boot-starter-logging | 使用 Logback 进行日志记录的启动器。默认的日志记录启动器 |
spring-boot-starter-reactor-netty | 用于将 Reactor Netty 作为嵌入式响应式 HTTP 服务器的启动器。 |
spring-boot-starter-tomcat | 用于将 Tomcat 作为嵌入式 Servlet 容器的启动器。spring-boot-starter-web 使用的默认 Servlet 容器启动器 |
spring-boot-starter-undertow | 用于将 Undertow 作为嵌入式 Servlet 容器的启动器。作为 spring-boot-starter-tomcat 的替代方案 |
要了解如何交换技术组件,请参阅关于交换 Web 服务器和日志系统的操作指南文档。
有关社区贡献的其他 starter 列表,请参阅 GitHub 上 spring-boot-starters
模块中的 README 文件。