Part III. 使用Spring boot

这章节带你了解使用Spring Boot更多的细节,它覆盖的主题像构建系统,自动装配和如何运行你的应用程序,我们也覆盖了一些Spring Boot的最佳实践,虽然Spring Boot没有什么特别之处(它只是你可以使用的另一个库),这里有一些建议,如果遵循的话,会让您在开发过程中更容易一些。

如果你刚开始使用Spring Boot,你或许应该进入此章节之前读入门指南。

 

13. 构建系统

强烈建议您选择一个支持依赖管理并且可以发布到“Maven Central”仓库的构建系统,我们建议你选择Maven或者Gradle,使用其他构建系统获取Spring Boot也可以,但是它也许没有我们很好的支持。

 

13.1 依赖管理

每个版本的Spring Boot都提供了它支持的依赖项的精选列表,实际上,你不需要提供为你构建配置的这些依赖提供任何版本,Spring Boot会为你管理,当你升级Spring Boot本身的时候,这些依赖项也会更好的保持着一致性的升级。

spring boot动漫论坛设计 spring boot官网_spring boot动漫论坛设计

 

你仍然可以特殊管理某个版本,就重写Spring Boot建议你的版本。

精选的列表包你使用Spring Boot的所有模块以及第三方库的列表,这个列表可用作标准的材料清单Bills of Materials (spring-boot-dependencies) 提供,也可以和Maven和Gradle一起使用。

 

13.2 Maven

Maven 用户可以继承 spring-boot-starter-parent 项目获取一些合理的默认值,这个父项目提供一下特征:

  • Java 1.8 作为默认编译器级别
  • UTF-8源编码
  • Dependency Management section,继承spring-boot-dependencies pom,用于管理公共依赖的版本,这个依赖管理允许你在你自己的pom中使用时省略<version>标记。
  • 合理的资源过滤
  • 合理的插件配置n (exec pluginGit commit ID, 和 shade).
  • 用 application.properties 和 application.yml 进行合理的资源过滤,包括特定配置文件的文件,例如:application-dev.properties 和 application-dev.yml

需要注意的是,由于application.properties 和 application.yml 文件接受Spring样式占位符,(${…}), 因此Maven过滤更改为 @..@p占位符,(你可以设置名为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.0.4.RELEASE</version>
</parent>

spring boot动漫论坛设计 spring boot官网_spring boot动漫论坛设计_02

 

你应该只需要在此依赖项上指定Spring Boot版本号,如果倒入其他启动器,则可以安全地省略版本号。

通过这个设置,你还可以覆盖自己项目中的属性来覆盖单个依赖,例如,要升级到另一个Spring Data版本系列,你需要设置以下内容添加到Pom:

<properties>

        <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>

</properties>

spring boot动漫论坛设计 spring boot官网_ci_03

 

检查 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.0.4.RELEASE</version>
                        <type>pom</type>
                        <scope>import</scope>
                </dependency>
        </dependencies>
</dependencyManagement>

如上所述,前面的示例设置不允许您使用属性覆盖单个依赖项,要获得相同的结果,您需要在spring-boot-dependencies 条目之前在项目的管理中添加一个条目,例如,要升级Spring Data版本系列,可以将以下元素添加到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.0.4.RELEASE</version>
                        <type>pom</type>
                        <scope>import</scope>
                </dependency>
        </dependencies>
</dependencyManagement>

spring boot动漫论坛设计 spring boot官网_spring boot动漫论坛设计_04

 

在前面的示例中,我们指定的BOM,但是可以以相同的方式覆盖任何依赖关系类型。