1. 简述
本文将详细介绍如何使用Spring Boot。本文将覆盖系统构建、自动配置、如何运行应用。还会包含一些Spring Boot最佳实践。尽管Spring Boot没有什么特殊的地方(它仅仅是你可以使用的一个类库而已)但是仍然有一些意见你可以采纳。这些意见将会使得你的开发更加容易一些。
2. 构建系统
强烈建议您选择支持依赖管理的构建系统,并且可以使用发布到“Maven Central”存储库的工件。 官方建议您选择Maven或Gradle。虽然 Spring Boot可以与其他构建系统(例如Ant)一起工作,但是它们不会得到特别好的支持。
2.1 依赖管理
Spring Boot的每个发行版都提供了一个支持的依赖列表。 在实践中,您不需要为构建配置中的任何这些依赖项提供一个版本,因为Spring Boot正在为您进行管理。 当您升级Spring Boot本身时,这些依赖关系也将以一致的方式升级。
如果您觉得有必要,您仍然可以指定一个版本并覆盖Spring Boot的建议版本。
支持的依赖列表包含您可以使用Spring Boot的所有模块以及第三方库的精炼列表。 该列表可作为标准的spring-boot-dependencies清单提供,并且还提供Maven和Gradle的其他专用支持。
Spring Boot的每个版本都与Spring Framework的基础版本相关联,因此官方强烈建议您不要自行指定其版本。
2.2 Maven
Maven用户可以从spring-boot-starter-parent项目继承,以获得合理的默认值。 父项目提供以下功能:
- Java 1.6作为默认的编译器级别。
- UTF-8源码编码。
- 依赖管理部分,继承自Spring-Boot-dependencies POM的通用依赖项,允许您省略的<version>标记。
- 合理的的资源过滤。
- 合理的插件配置(exec plugin, surefire, Git commit ID, shad)。
- 对application.properties和application.yml进行合理的资源过滤,包括特定于配置文件的文件(例如application-foo.properties和application-foo.yml)
2.2.1 继承父Starter
要将项目配置为从spring-boot-starter-parent继承,只需设置父项:
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
通过该设置,您还可以通过在自己的项目中重写属性来覆盖各个依赖项。 例如,要升级到另一个Spring Data发行版,您需要将以下内容添加到您的pom.xml中。
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>
检查spring-boot-dependencies pom以获取支持的属性列表。
https://github.com/spring-projects/spring-boot/blob/v1.5.10.RELEASE/spring-boot-dependencies/pom.xml
2.2.2 不使用父Starter来创建Spring Boot应用
不是每个人都喜欢从spring-boot-starter-parent POM继承。 你可能有你自己的企业标准的parent可以使用,或者你可能只是喜欢显式声明所有的Maven配置。
如果你不想使用spring-boot-starter-parent,你仍然可以通过使用scope = import dependency来保持依赖管理的好处(但不是插件管理):
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.10.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如上所述,该设置不允许您使用属性覆盖单个依赖项。 为了达到同样的结果,你需要在spring-boot-dependencies条目之前在项目的dependencyManagement中添加一个条目。 例如,要升级到另一个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>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.10.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.2.3 修改Java版本
spring-boot-starter-parent选择相当保守的Java兼容性。 如果您想遵循官方的建议并使用较新的Java版本,则可以添加一个java.version属性:
<properties>
<java.version>1.8</java.version>
</properties>
2.2.4 使用Spring Boot Maven插件
Spring Boot包含一个Maven插件,可以将项目打包为可执行的jar文件。 如果你想使用它,请将插件添加到<plugins>部分: