Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】
使用spring boot
本节将详细介绍如何使用spring boot。它涵盖了诸如构建系统,自动配置以及如何运行应用程序之类的主题。我们还将介绍一些spring boot最佳实践。尽管spring boot并没有什么特别的地方(它只是另一个可以使用的库),但是有一些建议可以使您的开发过程更轻松一些。
如果您是从spring boot开始的,那么在进入本节之前,您可能应该阅读入门指南。
3.1 构建系统
强烈建议您选择一个支持依赖关系管理并且可以使用发布到“maven central”存储库的artifacts的构建系统。我们建议您选择maven或gradle。可以使spring boot与其他构建系统(例如ant)一起使用,但是它们并没有得到很好的支持。
3.1.1 依赖管理
每个spring boot版本都提供了它所支持的依赖关系的精选列表。实际上,您不需要为构建配置中的所有这些依赖项提供版本,因为spring boot会为您管理该版本。当您升级spring boot本身时,这些依赖项也会以一致的方式升级。
tips: 您仍然可以指定版本,并在需要时覆盖spring boot的建议。
精选列表包含可与spring boot一起使用的所有spring模块以及完善的第三方库列表。该列表作为可与maven和gradle一起使用的标准物料清单(spring-boot-dependencies)提供。
warning: spring boot的每个发行版都与spring framework的基本版本相关联。 强烈建议您不要指定其版本。
3.1.2 maven
maven用户可以从spring-boot-starter-parent项目继承来获得合理的默认值。 父项目提供以下功能: java 1.8是默认的编译级别。 utf-8源编码。 从spring-boot-dependencies pom继承的依赖管理部分,它管理公共依赖项的版本。 当在自己的pom中使用这些依赖关系时,可以为这些依赖关系省略\<version>标记。 具有重新打包执行id的重新打包目标的执行。[an execution of the repackage goal with a repackage execution id.] 合理的资源过滤。 合理的插件配置(exec plugin,git commit id和shade)。 * 对application.properties和application.yml进行合理的资源过滤,包括profile-specific的文件(例如application-dev.properties和application-dev.yml)
请注意,由于application.properties和application.yml文件接受spring样式的占位符(${…}),因此maven过滤已更改为使用@ .. @占位符。(您可以通过设置一个名为resource.delimiter的maven属性来覆盖它。)
继承父starter
要将项目配置为从spring-boot-starter-parent继承,请设置pom文件的parent,如下所示:
1 <!-- inherit defaults from spring boot --> 2 <parent> 3 <groupid>org.springframework.boot</groupid> 4 <artifactid>spring-boot-starter-parent</artifactid> 5 <version>2.2.2.release</version> 6 </parent>
note: 您只需要为此依赖项指定spring boot版本号。如果导入其他启动器,则可以安全地省略版本号。
使用该设置,您还可以通过覆盖自己项目中的属性来覆盖各个依赖项。例如,要升级到另一个spring data发布系列,可以将以下内容添加到pom.xml中:
1 <!-- inherit defaults from spring boot --> 2 <properties> 3 <spring-data-releasetrain.version>fowler-sr2</spring-data-releasetrain.version> 4 </properties>
tip: 查看spring-boot-dependencies pom以获取受支持属性的列表。
在没有父pom的情况下使用spring boot
并非每个人都喜欢从spring-boot-starter-parent父pom继承。您可能需要使用自己的公司标准父级,或者可能希望显式声明所有maven配置。
如果您不想使用spring-boot-starter-parent,仍然可以通过使用scope = import依赖项来保留依赖项管理(而不是插件管理)的好处,如下所示:
1 <dependencymanagement> 2 <dependencies> 3 <dependency> 4 <!-- import dependency management from spring boot --> 5 <groupid>org.springframework.boot</groupid> 6 <artifactid>spring-boot-dependencies</artifactid> 7 <version>2.2.2.release</version> 8 <type>pom</type> 9 <scope>import</scope> 10 </dependency> 11 </dependencies> 12 </dependencymanagement>
如上所述,前面的示例设置不允许您使用属性来覆盖各个依赖项。为了获得相同的结果,需要在spring-boot-dependencies条目之前的项目的dependencymanagement中添加一个条目。 例如,要升级到另一个spring data发布系列,可以将以下元素添加到pom.xml中:
1 <dependencymanagement> 2 <dependencies> 3 <!-- override spring data release train provided by spring boot --> 4 <dependency> 5 <groupid>org.springframework.data</groupid> 6 <artifactid>spring-data-releasetrain</artifactid> 7 <version>fowler-sr2</version> 8 <type>pom</type> 9 <scope>import</scope> 10 </dependency> 11 <dependency> 12 <groupid>org.springframework.boot</groupid> 13 <artifactid>spring-boot-dependencies</artifactid> 14 <version>2.2.2.release</version> 15 <type>pom</type> 16 <scope>import</scope> 17 </dependency> 18 </dependencies> 19 </dependencymanagement>
note: 在前面的示例中,我们指定了bom,但是可以以相同方式覆盖任何依赖项类型。
使用spring boot maven插件
spring boot包含一个可以将项目打包为可执行jar的maven插件。如果要使用插件,请将其添加到您的\<plugins>部分,如以下示例所示:
<build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build>
note: 如果您使用了spring-boot-starter-parent,则只需添加该插件。除非您要更改父级中定义的设置,否则无需对其进行配置。
3.1.3 gradle
3.1.4 ant
3.1.5 启动器[starters]
starters是一系列便捷的,可以包含在你应用中的依赖项描述符[dependency descriptors]。您可以一站式获取所需的所有spring和相关技术,从而省去遍历示例代码和遍历依赖描述符的负担。例如,如果要开始使用spring和jpa进行数据库访问,在项目中包括spring-boot-starter-data-jpa依赖项即可。
入门程序包含许多启动项目并快速运行所需的依赖项,并且支持依赖传递。
关于名字叫什么
官方startter都遵循类似的命名方式:spring-boot-starter-*,其中 * 是特定类型的应用程序[application]。这种命名结构在您需要寻找starter时提供了便利。许多ide中的maven集成使您可以按名称搜索依赖项。例如,在安装了适当的eclipse或sts插件的情况下,您可以在pom编辑器中按ctrl-space并键入“spring-boot-starter”以获取完整列表。
如“创建自己的stater”部分中所述,第三方starter的命名不建议以spring-boot开头,因为它是为spring boot官方artifactid保留的。而是,第三方启动程序通常以项目名称开头。例如,一个名为thirdpartyproject的第三方启动程序项目通常会被命名为thirdpartyproject-spring-boot-starter。
spring boot在org.springframework.boot组下提供了以下应用程序的starters:
table 1. spring boot application starters
table 2. spring boot production starters
table 3. spring boot technical starters
spring boot提供的starters pom均可在github找到,参考地址:https://github.com/spring-projects/spring-boot/tree/v2.2.2.release/spring-boot-project/spring-boot-starters
tip: 有关社区贡献的其他staters的列表,请参阅github上spring-boot-starters模块中的readme文件。
spring boot 2.2.2.release版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号javaso,回复“参考文档”即可。
关注微信公众号,一起交流下咯~