微服务架构之Spring Boot(九)

2022-04-07 19:54:37 浏览数 (1)

使用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,但是可以以相同的方式覆盖任何依赖关系类型。

0 人点赞