使用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模块以及完善的第三方库列表。该列表作为可与MavenGradle一起使用的标准物料清单(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 pluginGit commit IDshade)。 * 对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,如下所示:

 <!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
</parent>

Note: 您只需要为此依赖项指定Spring Boot版本号。如果导入其他启动器,则可以安全地省略版本号。

使用该设置,您还可以通过覆盖自己项目中的属性来覆盖各个依赖项。例如,要升级到另一个Spring Data发布系列,可以将以下内容添加到pom.xml中:

 <!-- Inherit defaults from Spring Boot -->
<properties>
<spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

Tip: 查看spring-boot-dependencies pom以获取受支持属性的列表。

在没有父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.2.2.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>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</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,回复“参考文档”即可。


关注微信公众号,一起交流下咯~

Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.1】的更多相关文章

  1. Spring Boot 2.2.2.RELEASE 版本中文参考文档【3.2 - 3.10】

    Spring Boot 2.2.2.RELEASE版本中文文档持续更新中~如有需要获取参考文档文件,关注公众号JavaSo,回复“参考文档”即可. 3.2 结构化代码 Spring Boot不需要任何 ...

  2. Spring Boot 2.2.2.RELEASE 版本中文参考文档

    写在前面 在我初次接触MongoDB的时候,是为了做一个监控系统和日志分析系统.当时在用Java操作MongoDB数据里的数据的时候,都是在网上查找Demo示例然后完成的功能,相信大家也同样的体会,网 ...

  3. Java | Spring Boot Swagger2 集成REST ful API 生成接口文档

      Spring Boot Swagger2 集成REST ful API 生成接口文档 原文 简介 由于Spring Boot 的特性,用来开发 REST ful 变得非常容易,并且结合 Swagg ...

  4. spring boot / cloud (三) 集成springfox-swagger2构建在线API文档

    spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...

  5. Spring Boot 2.x基础教程:Swagger静态文档的生成

    前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了.如果您还不熟悉这块,可以先阅读: Spring Boo ...

  6. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  7. spring boot 中使用swagger 来自动生成接口文档

    1.依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  8. Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍

    1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...

  9. 记录Spring Boot 2.3.4.RELEASE版注解方式实现AOP和通知的执行顺序

    1.advice 按照以下的顺序执行 输出结果:(正常和异常) 说明:Spring boot 2.3.4.RELEASE 版本使用的AOP是spring-aop-5.2.9.RELEASE,AOP的通 ...

随机推荐

  1. 《Windows内核安全与驱动开发》 2.3 重要的数据结构

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 2.3 重要的数据结构 一.驱动对象  Windows内核采用__的编程方式 ...

  2. 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

    如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async ...

  3. .Net Core下使用MQTT协议直连IoT平台

    [摘要] .Net平台通过原生MQTT接口,作为南向设备对接OceanConnect平台 因为种种历史原因吧,目前华为平台上对.net的支持案例SDK确实比较少,当看到各种语言的SDK和Demo,唯独 ...

  4. 转:Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载

    当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...

  5. C 可变参数函数的本质

    C语言支持定义可变参数的函数,方法是在函数的参数列表最后加上 " ... ",代表变长的参数列表,例如: void Func(int num, ...) { } 需要注意 “... ...

  6. ubuntu下仅仅获取网卡一的ip地址 && shell中字符串拼接

    问题描述: ubuntu下仅仅获取网卡一的ip地址 问题背景: eth0,eth1,eth2……代表网卡一,网卡二,网卡三…… lo代表127.0.0.1,即localhost | 问题描述: 已知字 ...

  7. 添加-ObjC的含义

    http://www.cnblogs.com/yashi88/p/3551947.html 参考文章 当使用某个第三方库时,遇到 出现"selector not recognized&quo ...

  8. iOS 网络基本剖析

    一.网络通信的本质 数据传输,数据交换 Client     <======>  服务器 二.HTTP.TCP,IP.UDP.Socket关系刨析 Socket:套接字,是一个用于网络传输 ...

  9. 一台电脑如何管理多个ssh key

    目录 一.生成ssh key 1.1 生成密钥(必须) 1.2 设置路径 (可选) 1.3 指定密语字符串(可选) 二.设置ssh key的代理 2.1. 首先查看代理 2.2. 添加私钥 三.添加公 ...

  10. acm模板总结

    模板链接 字符串模板 KMP EXKMP Trie 可持久化Trie树+DFS序 01Trie Manacher 字符串哈希 2019上海网络赛G题 17 SA(后缀数组)  最大不重叠相似子串 求两 ...