使用Spring Boot
本节详细介绍了如何使用Spring Boot。它涵盖了构建系统,自动配置以及如何运行应用程序等主题。我们还介绍了一些Spring Boot最佳做法。
虽然Spring Boot没有什么特别之处(它只是你可以使用的另一个库),但有一些建议,如果遵循这些建议,可以使您的开发过程更容易一些。
13.构建系统
强烈建议您选择支持依赖关系管理且可以使用发布到“Maven Central”存储库的工件的构建系统 。我们建议您选择Maven或Gradle。可以使
Spring Boot与其他构建系统(例如Ant)一起使用,但它们并没有得到特别好的支持。
13.1依赖管理
Spring Boot的每个版本都提供了它支持的依赖项的策划列表。实际上,您不需要为构建配置中的任何这些依赖项提供版本,因为Spring Boot会
为您管理。升级Spring引导时,这些依赖项也会以一致的方式升级。
如果需要,您仍然可以指定版本并覆盖Spring Boot的建议。
精选列表包含您可以使用Spring Boot的所有spring modules以及精选的第三方库列表。该列表以标准 物料清单
( spring-boot-dependencies )的形式提供 ,可与Maven和 Gradle一起使用。
Spring Boot的每个版本都与Spring框架的基本版本相关联。我们强烈建议您不要指定其版本。
13.2 Maven
Maven用户可以继承 spring-boot-starter-parent 项目以获得合理的默认值。父项目提供以下功能:
Java 1.8作为默认编译器级别。
UTF-8源编码。
一个依赖管理部分,从春天启动依赖性继承POM,管理公共依赖的版本。此依赖关系管理允许您在自己的pom中使用时省略这些依赖项的
<version>标记。
使用 repackage 执行ID 执行 repackage 目标。
明智的 资源过滤。
明智的插件配置(exec插件, Git提交ID和 阴影)。
application.properties 和 application.yml 的合理资源过滤,包括特定于配置文件的文件(例如, application-dev.properties
和 application-dev.yml )
请注意,由于 application.properties 和 application.yml 文件接受Spring样式占位符( ${… } ),因此Maven过滤更改为使用 @..@ 占位
符。(您可以通过设置名为 resource.delimiter 的Maven属性来覆盖它。)
13.2.1继承Starter Parent
要将项目配置为从 spring-boot-starter-parent 继承,请按以下方式设置 parent :
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
您应该只需要在此依赖项上指定Spring Boot版本号。如果导入其他启动器,则可以安全地省略版本号。
通过该设置,您还可以通过覆盖自己项目中的属性来覆盖单个依赖项。例如,要升级到另一个Spring数据发布列表,您可以将以下内容添加
到 pom.xml :
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
检查 spring-boot-dependencies pom 以获取支持的属性列表。
13.2.2在没有父POM的情况下使用Spring Boot
不是每个人都喜欢继承 spring-boot-starter-parent POM。您可能拥有自己需要使用的公司标准父级,或者您可能希望明确声明所有
Maven配置。
如果您不想使用 spring-boot-starter-parent ,您仍然可以通过使用 scope=import 依赖项来保持依赖项管理(但不是插件管理)的好处,
如下所示:
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如上所述,前面的示例设置不允许您使用属性覆盖单个依赖项。要获得相同的结果,您需要在 spring-boot-dependencies 条目之前在项目
的 dependencyManagement 中添加条目。例如,要升级到另一个Spring数据发布列,您可以将以下元素添加到 pom.xml :
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在前面的示例中,我们指定了BOM,但是可以以相同的方式覆盖任何依赖关系类型。