如果您是从Spring Boot或“ Spring”开始的,请先阅读本节。它回答了基本的“什么?”,“如何?” 和“为什么?” 问题。它包括对Spring Boot的介绍以及安装说明。然后,我们将引导您构建第一个Spring Boot应用程序,并讨论一些核心原理。

1.介绍Spring Boot

Spring Boot帮助您创建可运行的独立的,基于生产级的基于Spring的应用程序。我们对Spring平台和第三方库持固执己见的观点,这样您就可以以最小的麻烦开始使用。大多数Spring Boot应用程序只需要很少的Spring配置。
您可以使用Spring Boot创建Java应用程序,可以通过使用java -jar或更传统的战争部署来启动Java应用程序。我们还提供了一个运行“ spring脚本”的命令行工具。
我们的主要目标是:

  • 为所有Spring开发提供根本上更快且可广泛访问的入门体验。
  • 开箱即用,但由于需求开始与默认值有所出入,因此很快就会摆脱困境。
  • 提供一系列大型项目通用的非功能性功能(例如嵌入式服务器,安全性,指标,运行状况检查和外部化配置)。
  • 完全没有代码生成,也不需要XML配置。

    2.系统要求

    Spring Boot 2.4.3需要Java 8,并且与Java 15(包括)兼容。 还需要Spring Framework 5.3.4或更高版本。
    为以下构建工具提供了明确的构建支持:
制作工具 版本
马文 3.3+
摇篮 6(6.3或更高版本)。还支持5.6.x,但已弃用

2.1 Servlet容器

Spring Boot支持以下嵌入式servlet容器:

姓名 Servlet版本
Tomcat 9.0 4.0
码头9.4 3.1
Undertow 2.0 4.0

您还可以将Spring Boot应用程序部署到任何Servlet 3.1+兼容的容器中。

3.安装Spring Boot

Spring Boot可以与“经典” Java开发工具一起使用,也可以作为命令行工具安装。无论哪种方式,都需要Java SDK v1.8或更高版本。在开始之前,您应该使用以下命令检查当前的Java安装:
$ java-版本
如果您不熟悉Java开发,或者想尝试使用Spring Boot,则可能要先尝试使用Spring Boot CLI(命令行界面)。否则,请继续阅读“经典”安装说明。

3.1 Java开发人员的安装说明

您可以像使用任何标准Java库一样使用Spring Boot。为此,请spring-boot-*.jar在类路径中包含适当的文件。Spring Boot不需要任何特殊的工具集成,因此您可以使用任何IDE或文本编辑器。另外,Spring Boot应用程序没有什么特别之处,因此您可以像运行其他Java程序一样运行和调试Spring Boot应用程序。
尽管您可以复制Spring Boot jar,但是我们通常建议您使用支持依赖关系管理的构建工具(例如Maven或Gradle)。

3.1.1 Maven安装

Spring Boot与Apache Maven 3.3或更高版本兼容。如果尚未安装Maven,则可以按照maven.apache.org上的说明进行操作。

在许多操作系统上,Maven可以与程序包管理器一起安装。如果您使用OSX Homebrew,请尝试brew install maven。Ubuntu用户可以运行sudo apt-get install maven。具有Chocolatey的Windows用户可以choco install maven从提升的(管理员)提示符下运行。

Spring Boot依赖项使用org.springframework.boot groupId。通常,您的Maven POM文件从spring-boot-starter-parent项目继承,并声明对一个或多个“启动器”的依赖关系。Spring Boot还提供了一个可选的Maven插件来创建可执行jar。
有关使用Spring Boot和Maven入门的更多详细信息,请参见Maven插件参考指南的“入门”部分

3.1.2 摇篮安装

Spring Boot与Gradle 6(6.3或更高版本)兼容。还支持Gradle 5.6.x,但不建议使用该支持,在将来的版本中将删除该支持。如果尚未安装Gradle,则可以按照gradle.org上的说明进行操作
可以使用来声明Spring Boot依赖项org.springframework.boot group。通常,您的项目会声明对一个或多个“启动器”的依赖。Spring Boot提供了一个有用的Gradle插件,可用于简化依赖项声明和创建可执行jar。
摇篮包装
当您需要构建项目时,Gradle包装器提供了一种“获取” Gradle的好方法。它是一个小的脚本和库,您随代码一起提交以引导构建过程。有关详细信息,请参见docs.gradle.org/current/userguide/gradle_wrapper.html
有关Spring Boot和Gradle入门的更多详细信息,可以在Gradle插件参考指南的“入门”部分中找到。

3.2 安装Spring Boot CLI

Spring Boot CLI(命令行界面)是一个命令行工具,可用于快速使用Spring进行原型设计。它使您可以运行Groovy脚本,这意味着您具有类似Java的熟悉语法,而没有太多样板代码。
您无需使用CLI即可与Spring Boot一起使用,但这绝对是使Spring应用程序启动的最快方法。

3.2.1 手动安装

您可以从Spring软件存储库下载Spring CLI发行版:

也提供最先进的 快照分发
下载完成后,请按照解压缩后的存档中的INSTALL.txt说明进行操作。总而言之,文件目录中有一个spring脚本(spring.bat对于Windows)。或者,您可以使用该文件(脚本可帮助您确保正确设置类路径)。bin/``.zip``java -jar``.jar

3.2.2 使用SDKMAN安装!

SDKMAN!(软件开发工具包管理器)可用于管理各种二进制SDK的多个版本,包括Groovy和Spring Boot CLI。获取SDKMAN!从sdkman.io并使用以下命令安装Spring Boot:
$ sdk安装springboot
$ spring —version
Spring Boot v2.4.3
如果您为CLI开发功能并希望访问所构建的版本,请使用以下命令:
$ sdk安装springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.4.3-bin/spring-2.4.3/
$ sdk默认的springboot dev
$ spring —version
Spring CLI v2.4.3
前面的说明安装spring称为dev实例的本地实例。它指向您的目标构建位置,因此每次重新构建Spring Bootspring都是最新的。
您可以通过运行以下命令来查看它:
$ sdk ls springboot

================================================== =============================
可用的Springboot版本
================================================== =============================
> +开发
* 2.4.3

================================================== =============================
+-本地版本
*-已安装
>-当前正在使用
================================================== =============================

3.2.3 OSX Homebrew安装

如果您在Mac上并且使用Homebrew,则可以使用以下命令来安装Spring Boot CLI:
$ brew tap spring-io / tap
$ brew install spring-boot
自制软件安装spring/usr/local/bin

如果看不到该公式,则说明brew的安装可能已过期。在这种情况下,请运行brew update并重试。

3.2.4 MacPorts安装

如果您使用的是Mac并使用MacPorts,则可以使用以下命令安装Spring Boot CLI:
$ sudo port install spring-boot-cli

3.2.5 命令行补全

Spring Boot CLI包含脚本,这些脚本为BASHzsh Shell提供命令完成。您可以source将脚本(也称为spring)放在任何shell中,或将其放在个人或系统范围内的bash完成初始化中。在Debian系统上,系统范围内的脚本位于其中,/shell-completion/bash并且在启动新Shell时将执行该目录中的所有脚本。例如,如果您是使用SDKMAN!安装的,则要手动运行脚本,请使用以下命令:
$。〜/ .sdkman / candidates / springboot / current / shell-completion / bash / spring
$ spring <这里点击标签>
抢救jar运行测试版

如果使用Homebrew或MacPorts安装Spring Boot CLI,则命令行完成脚本会自动注册到您的Shell中。

3.2.6 Windows Scoop安装

如果您使用的是Windows并使用Scoop,则可以使用以下命令安装Spring Boot CLI:
>铲斗添加附加功能
>独家安装springboot
Scoop安装spring~/scoop/apps/springboot/current/bin

如果您没有看到应用清单,则可能是因为瓢的安装已过期。在这种情况下,请运行scoop update并重试。

3.2.7 快速入门Spring CLI示例

您可以使用以下Web应用程序来测试安装。首先,创建一个名为的文件app.groovy,如下所示:

  1. @RestController
  2. class ThisWillActuallyRun {
  3. @RequestMapping("/")
  4. String home() {
  5. "Hello World!"
  6. }
  7. }

然后从外壳运行它,如下所示:
$ spring run app.groovy

由于依赖项已下载,因此您的应用程序的第一次运行很慢。随后的运行要快得多。

[localhost:8080](http://localhost:8080/)在您喜欢的网络浏览器中打开。您应该看到以下输出:
你好,世界!

3.3 从较早版本的Spring Boot升级

如果要从1.xSpring Boot发行版进行升级,请查看项目Wiki上的“迁移指南”,其中提供了详细的升级说明。还请检查“发行说明”以获取每个发行版的“新功能和值得注意的功能”列表。
升级到新功能版本时,某些属性可能已被重命名或删除。Spring Boot提供了一种在启动时分析应用程序环境并打印诊断的方法,而且还为您在运行时临时迁移属性。要启用该功能,请将以下依赖项添加到您的项目中:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-properties-migrator</artifactId>
  4. <scope>runtime</scope>
  5. </dependency>
较晚添加到环境的属性(例如使用时@PropertySource)将不被考虑。
迁移完成后,请确保从项目的依赖项中删除此模块。

要升级现有的CLI安装,请使用适当的程序包管理器命令(例如,brew upgrade)。如果您手动安装了CLI,请遵循标准说明,记住要更新您的PATH环境变量以删除所有较旧的引用。

4.开发您的第一个Spring Boot应用程序

本节介绍如何开发小型“ Hello World!”。Web应用程序,重点介绍了Spring Boot的一些关键功能。我们使用Maven来构建此项目,因为大多数IDE都支持它。

spring.io网站包含了许多“入门”指南使用Spring的引导。如果您需要解决特定问题,请首先检查。
通过转到start.spring.io并从依赖项搜索器中选择“ Web”启动器,可以简化以下步骤。这样做会生成一个新的项目结构,以便您可以立即开始编码。查看Spring Initializr文档以获取更多详细信息。

在开始之前,请打开终端并运行以下命令,以确保安装了有效的Java和Maven版本:
$ java-版本
Java版本“ 1.8.0_102”
Java(TM)SE运行时环境(内部版本1.8.0_102-b14)
Java HotSpot(TM)64位服务器VM(内部版本25.102-b14,混合模式)
$ mvn -v
Apache Maven 3.5.4(1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven主页:/usr/local/Cellar/maven/3.3.9/libexec
Java版本:1.8.0_102,供应商:Oracle Corporation

此样本需要在其自己的目录中创建。随后的说明假定您已经创建了一个合适的目录,并且它是当前目录。

4.1 创建POM

我们需要先创建一个Mavenpom.xml文件。本pom.xml是用来构建项目的配方。打开您喜欢的文本编辑器并添加以下内容:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.example</groupId>
  6. <artifactId>myproject</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <parent>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-parent</artifactId>
  11. <version>2.4.3</version>
  12. </parent>
  13. <description/>
  14. <developers>
  15. <developer/>
  16. </developers>
  17. <licenses>
  18. <license/>
  19. </licenses>
  20. <scm>
  21. <url/>
  22. </scm>
  23. <url/>
  24. <!-- Additional lines to be added here... -->
  25. </project>

上面的清单应为您提供有效的构建。您可以通过运行mvn package进行测试(目前,您可以忽略“ jar将为空-没有内容标记为包含!”警告)。

此时,您可以将项目导入IDE(大多数现代Java IDE都包含对Maven的内置支持)。为简单起见,我们在此示例中继续使用纯文本编辑器。

4.2 添加类路径依赖

Spring Boot提供了许多“启动器”,使您可以将jar添加到类路径中。我们的烟雾测试应用程序使用spring-boot-starter-parentparent聚甲醛的部分。本spring-boot-starter-parent是一个特殊的启动提供有用的Maven的默认值。它还提供了一个dependency-management部分,以便您可以省略version“祝福”依赖项的标签。
其他“入门”提供了开发特定类型的应用程序时可能需要的依赖项。由于我们正在开发Web应用程序,因此我们添加了spring-boot-starter-web依赖性。在此之前,我们可以通过运行以下命令来查看当前的状态:
$ mvn依赖项:树

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
mvn dependency:tree命令显示项目依赖关系的树形表示。您可以看到它spring-boot-starter-parent本身不提供任何依赖关系。要添加必要的依赖关系,请编辑您的依赖关系,pom.xmlspring-boot-starter-web在该parent部分的下面添加依赖关系:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. </dependencies>

如果mvn dependency:tree再次运行,您会发现现在还有许多其他依赖项,包括Tomcat Web服务器和Spring Boot本身。

4.3 编写代码

要完成我们的应用程序,我们需要创建一个Java文件。默认情况下,Maven从编译源src/main/java,因此您需要创建该目录结构,然后添加一个名为的文件src/main/java/Example.java,其中包含以下代码:

  1. import org.springframework.boot.*;
  2. import org.springframework.boot.autoconfigure.*;
  3. import org.springframework.web.bind.annotation.*;
  4. @RestController
  5. @EnableAutoConfiguration
  6. public class Example {
  7. @RequestMapping("/")
  8. String home() {
  9. return "Hello World!";
  10. }
  11. public static void main(String[] args) {
  12. SpringApplication.run(Example.class, args);
  13. }
  14. }

尽管这里没有太多代码,但是正在发生很多事情。我们将在接下来的几节中逐步介绍重要部分。

4.3.1 @RestController和@RequestMapping注释

我们Example课程的第一个注释是@RestController。这被称为构造型注释。它为阅读代码的人和Spring提供了提示,提示该类起特定作用。在这种情况下,我们的类是一个web @Controller,因此Spring在处理传入的Web请求时会考虑使用它。
@RequestMapping注释提供“路由”的信息。它告诉Spring任何具有/路径的HTTP请求都应映射到该home方法。该@RestController注解告诉Spring使得到的字符串直接返回给调用者。

@RestController@RequestMapping注解是Spring MVC的注解(他们并不是专门针对春季启动)。有关更多详细信息,请参见Spring参考文档中的MVC部分

4.3.2 @EnableAutoConfiguration批注

第二级注释是@EnableAutoConfiguration。这个注释告诉Spring Boot根据添加的jar依赖关系“猜测”您如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置假定您正在开发Web应用程序并相应地设置Spring。
启动器和自动配置
自动配置旨在与“启动器”配合使用,但是这两个概念并没有直接联系在一起。您可以在启动程序之外自由选择jar依赖项。Spring Boot仍然尽其最大努力来自动配置您的应用程序。

4.3.3 “主要”方法

我们应用程序的最后一部分是main方法。这是遵循Java约定的应用程序入口点的标准方法。我们的main方法SpringApplication通过调用委托给Spring Boot的类runSpringApplication引导我们的应用程序,启动Spring,这反过来又启动了自动配置的Tomcat Web服务器。我们需要将Example.class一个参数传递给run方法,以判断SpringApplication哪个是主要的Spring组件。该args数组也将通过以公开任何命令行参数。

4.4 运行示例

此时,您的应用程序应该可以工作了。由于使用了spring-boot-starter-parentPOM,因此有一个有用的run目标,可以用来启动应用程序。mvn spring-boot:run从根项目目录中键入以启动应用程序。您应该看到类似于以下内容的输出:
$ mvn spring-boot:运行

_
/ \ / __
__ \ \ \ \
(()\ __
|’ |’ | |’ \ / | \ \ \ \ \<br /> \\ / ___)| | _)| | | | | || (_ | |))))<br /> '| ____ | .__ | _ | | _ | _ | | _ \ __,| / / / /<br /> ======== | _ | ============= | ___ / = / _ / _ / _ /<br /> :: Spring Boot ::(v2.4.3)<br />....... 。。<br />....... 。。(日志输出在这里)<br />....... 。。<br />........在2.222秒内启动示例(JVM运行6.514)<br />如果您打开Web浏览器到localhost:8080,则应该看到以下输出:<br />你好,世界!<br />要正常退出该应用程序,请按ctrl-c`。

4.5 创建一个可执行的Jar

通过创建一个可以在生产环境中运行的完全独立的可执行jar文件来结束示例。可执行jar(有时称为“胖jar”)是包含您的已编译类以及代码需要运行的所有jar依赖项的归档文件。
可执行jar和Java
Java没有提供加载嵌套jar文件(jar中本身包含的jar文件)的标准方法。如果您要分发独立的应用程序,则可能会出现问题。
为了解决这个问题,许多开发人员使用“超级”罐子。uber jar将来自应用程序所有依赖项的所有类打包到单个存档中。这种方法的问题在于,很难查看应用程序中包含哪些库。如果在多个jar中使用了相同的文件名(但内容不同),也可能会产生问题。
Spring Boot采用了另一种方法,实际上允许您直接嵌套jar。
要创建可执行jar,我们需要将添加spring-boot-maven-pluginpom.xml。为此,请在该dependencies部分下方插入以下行:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. </plugins>
  8. </build>
所述spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果不使用父POM,则需要自己声明此配置。有关详细信息,请参见插件文档

保存您的代码,pom.xml然后从命令行运行mvn package,如下所示:
$ mvn软件包

[INFO]正在扫描项目…
[信息]
[INFO] ———————————————————————- ————————————-
[INFO]构建myproject 0.0.1-SNAPSHOT
[INFO] ———————————————————————- ————————————-
[INFO] ……
[INFO] —- maven-jar-plugin:2.4:jar(默认-jar)@ myproject-
[INFO]构建jar:/Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[信息]
[INFO] —- spring-boot-maven-plugin:2.4.3:repackage(默认)@ myproject-
[INFO] ———————————————————————- ————————————-
[INFO]建立成功
[INFO] ———————————————————————- ————————————-
如果查看target目录,则应该看到myproject-0.0.1-SNAPSHOT.jar。该文件的大小应为10 MB左右。如果您想窥视内部,可以使用jar tvf,如下所示:
$ jar tvf target / myproject-0.0.1-SNAPSHOT.jar
您还应该myproject-0.0.1-SNAPSHOT.jar.originaltarget目录中看到一个更小的文件。这是Maven在Spring Boot重新打包之前创建的原始jar文件。
要运行该应用程序,请使用以下java -jar命令:
$ java -jar target / myproject-0.0.1-SNAPSHOT.jar

_
/ \ / __
__ \ \ \ \
(()\ __
|’ |’ | |’ \ / | \ \ \ \ \<br /> \\ / ___)| | _)| | | | | || (_ | |))))<br /> '| ____ | .__ | _ | | _ | _ | | _ \ __,| / / / /<br /> ======== | _ | ============= | ___ / = / _ / _ / _ /<br /> :: Spring Boot ::(v2.4.3)<br />....... 。。<br />....... 。。(日志输出在这里)<br />....... 。。<br />........在2.536秒内启动示例(JVM运行2.864)<br />和以前一样,要退出该应用程序,请按ctrl-c`。

5.接下来阅读什么

希望本节提供了一些Spring Boot基础知识,并带您开始编写自己的应用程序。如果您是面向任务的开发人员,则可能要跳到spring.io并查看一些解决特定“我如何使用Spring进行操作”的入门指南。问题。我们也有特定Spring Boot的“操作方法”参考文档。
否则,下一个逻辑步骤是阅读using-spring-boot.html。如果您真的不耐烦,还可以继续阅读有关Spring Boot功能的信息