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的所有模块以及第三方库的列表,这个列表可用作标准的材料清单Bills of Materials (spring-boot-dependencies) 提供,也可以和Maven和Gradle一起使用。
13.2 Maven
Maven 用户可以继承 spring-boot-starter-parent 项目获取一些合理的默认值,这个父项目提供一下特征:
- Java 1.8 作为默认编译器级别
- UTF-8源编码
- A Dependency Management section,继承spring-boot-dependencies pom,用于管理公共依赖的版本,这个依赖管理允许你在你自己的pom中使用时省略<version>标记。
- 合理的资源过滤
- 合理的插件配置n (exec plugin, Git 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 Data版本系列,你需要设置以下内容添加到Pom:
<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.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>
| |
在前面的示例中,我们指定的BOM,但是可以以相同的方式覆盖任何依赖关系类型。 |