05.如何使用Spring Boot - Maven
本节将更详细地介绍如何使用 Spring Boot。 它涵盖了诸如构建系统、自动配置以及如何运行应用程序等内容。 此外,还介绍了一些 Spring Boot 的最佳实践。 尽管 Spring Boot 没有什么特别之处(它只是您可以使用的另一个库) ,但是有一些建议可以使您的开发过程更容易一些 。
如果你之前没有使用过 Spring Boot,那么在看这部分内容之前,你应该先阅读下入门指南
构建系统
强烈建议您选择一个支持依赖管理的构建系统,该系统可以使用发布到 Maven 中央库的依赖。 我们建议你选择 Maven 或 Gradle。Spring Boot 也支持其他构建系统,例如 Ant,但是它们并没有得到特别好的支持。
因为公司目前只用Maven,所以Gradle和Ant的方式不做翻译了
依赖管理
Spring Boot 的每个版本都提供了它所支持的经过精心策划的依赖项列表。 实际上,您不需要为构建配置中的任何依赖项提供版本信息,因为 Spring Boot 已经为您管理了这些依赖项。 当您升级 Spring Boot 时,这些依赖关系也会随之升级。
如果需要的话,您仍然可以指定一个版本并覆盖 Spring Boot 提供的版本。
这个精选列表包含所有可以用于 Spring Boot 的 Spring 模块,以及第三方库的精选列表。 该列表是一个可用于 Maven 和 Gradle的标准的材料账单(spring-boot-dependencies
)。
Spring Boot 的每个版本都与 Spring 框架的基本版本高度关联, 建议您不要指定它的版本
Maven
Maven 用户可以通过继承 spring-boot-starter-parent
项目来获得合理的默认值。 父项目具有以下特点:
- 默认的编译级别是 Java 1.8
- 编码格式为 UTF-8
- 从
spring-boot-dependencies
pom 继承而来的依赖管理部分,用于管理公共依赖项的版本。 这种依赖项管理允许您在自己的 pom 中引入依赖时忽略<version>
标记。 - 带有
repackage
执行 id 的repackage
目标的执行 - 可感知的资源过滤
- 合理的插件配置( exec plugin, Git commit ID, shade )
- 对
application.properties
和application.yml
进行合理的资源筛选,包括特定的配置文件(例如,application-dev.properties
和application-dev.yml
)
注意,因为 application.properties
和 application.yml
文件接受 Spring 风格的占位符( ${…}
) ,所以 Maven 过滤标识被更改为使用 @..@
占位符 (可以通过设置一个名为 resource.delimiter
的 Maven 属性来覆盖该属性)。
继承 Starter 父类
若要将项目配置为从 spring-boot-starter-parent
继承,请将 parent 设置如下:
1 | <!-- Inherit defaults from Spring Boot --> |
您应该只需要通过这个依赖指定 Spring Boot 版本号。如果导入其他 starter 依赖,您可以省略版本号
使用该设置,还可以通过重写自己项目中的属性来重写单个依赖项。 例如,要升级到另一个 Spring Data 版本,可以在 pom.xml
中添加以下内容:
1 | <properties> |
检查
spring-boot-dependencies
pom文件获取受支持的属性列表
使用没有父 POM 的 Spring Boot
并不是每个人都喜欢继承 spring-boot-starter-parent
POM, 您可能需要使用自己的企业标准父级,或者您可能更喜欢显式声明所有 Maven 配置。
如果你不想使用 spring-boot-starter-parent
,你可以通过 scope=import
的方式来从依赖管理(不是插件管理)中受益,如下所示:
1 | <dependencyManagement> |
如上所述,前面的示例程序不允许使用属性重写单个依赖项。 要实现相同的结果,您需要在 spring-boot-dependencies
依赖之前在项目的 dependencyManagement
中添加一个条目。 例如,要升级到另一个 Spring Data 发布系列,可以在 pom.xml
中添加以下元素:
1 | <dependencyManagement> |
在前面的例子中,我们指定了一个BOM,任务依赖类型都可以以相同的方式来重写
使用 Spring Boot Maven 插件
Spring Boot 包含一个 Maven 插件,可以将项目打包为一个可执行 jar。 如果你想使用这个插件,可以把它添加到你的插件部分,如下面的例子所示:
1 | <build> |
如果你使用 Spring Boot starter 父 pom,你只需要添加插件,没有必要配置它,除非您想要更改在父级中定义的设置