20220506 Getting Started
前言
1. Spring Boot 介绍
Spring Boot 可帮助您创建可以运行的独立的、生产级的基于 Spring 的应用程序。
您可以使用 Spring Boot 创建可以通过使用 java -jar
或更传统的 war 部署启动的 Java 应用程序。我们还提供了一个运行 spring scripts
的命令行工具。
Spring Boot 的主要目标是:
- 为所有 Spring 开发提供更快且入门更简单的体验
- 开箱即用,但随着需求开始分歧,可以快速从默认配置重新开始
- 提供一系列大型项目通用的非功能性功能(例如嵌入式服务器,安全,指标,运行状况检查和外部化配置)
- 完全没有代码生成,也不需要 XML 配置
2. 系统要求
Spring Boot 2.6.7
需要 Java 8
,并且与 Java 17
(包括)兼容。 还需要 Spring Framework 5.3.19
或更高版本。
支持的构建工具:
构建工具 | 版本 |
---|---|
Maven | 3.5+ |
Gradle | 6.8.x、6.9.x 和 7.x |
2.1. Servlet 容器
支持以下嵌入式servlet容器:
名称 | Servlet 版本 |
---|---|
Tomcat 9.0 | 4.0 |
Jetty 9.4 | 3.1 |
Jetty 10.0 | 4.0 |
Undertow 2.0 | 4.0 |
还可以将 Spring Boot 应用程序部署到任何 Servlet 3.1+ 兼容容器。
3. 安装 Spring Boot
Spring Boot 可以与 “经典” Java 开发工具一起使用,也可以作为命令行工具安装。无论哪种方式,您都需要 Java SDK v1.8 或更高版本。在开始之前,您应该使用以下命令检查当前的 Java 安装:
$ java -version
3.1. Java 开发人员安装说明
可以像使用任何标准 Java 库一样使用 Spring Boot
3.1.1. Maven 安装
略
3.1.2. Gradle 安装
略
3.2. 安装 Spring Boot CLI
Spring Boot CLI(命令行界面)是一个命令行工具,您可以使用它来快速使用 Spring 进行原型设计。它允许您运行 Groovy 脚本,这意味着您拥有熟悉的类似 Java 的语法,而无需太多样板代码。
您无需使用 CLI 即可使用 Spring Boot,但它是一种无需 IDE 即可快速启动 Spring 应用程序的方法。
3.2.1。手动安装
您可以从 Spring 软件存储库下载 Spring CLI 发行版:
下载后,按照解压缩存档中的 INSTALL.txt
说明进行操作。总之,.zip
文件中的 bin/
目录中有一个 spring 脚本( spring.bat
适用于 Windows )。或者,您可以对 .jar
文件使用 java -jar
(该脚本可帮助您确保类路径设置正确)。
3.2.2. 使用 SDKMAN 安装
略
3.2.3. OSX Homebrew 安装
略
3.2.4. MacPorts 安装
略
3.2.5. 命令行补全
略
3.2.6. Windows Scoop 安装
略
3.2.7. 快速入门 Spring CLI 示例
您可以使用以下 Web 应用程序来测试您的安装。首先,创建一个名为 app.groovy
的文件,如下所示:
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
然后从 shell 运行它,如下所示:
$ spring run app.groovy
在您喜欢的网络浏览器中打开 localhost:8080
。您应该看到以下输出:
Hello World!
4. 开发你的第一个 Spring Boot 应用程序
本节介绍如何开发一个小的 “Hello World!” ,突出 Spring Boot 的一些关键特性的 web 应用程序。我们使用 Maven 来构建这个项目,因为大多数 IDE 都支持它。
在我们开始之前,打开一个终端并运行以下命令以确保您安装了有效版本的 Java 和 Maven:
$ java -version
openjdk version "1.8.0_302"
$ mvn -v
Apache Maven 3.8.3
4.1. 创建 POM
pom.xml
是用于构建项目的配方
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
4.2. 添加类路径依赖项
Spring Boot 提供了许多 “Starters” ,可让您将 jars 添加到类路径中。测试应用程序 POM 的 parent
部分中使用 spring-boot-starter-parent
。
spring-boot-starter-parent
是一个特殊的启动器( starter
),提供有用的 Maven 默认值。它提供了一个 dependency-management
部分,可以省略依赖项(GAV)的 version
标签。
由于我们正在开发 Web 应用程序,因此我们添加了一个 spring-boot-starter-web
依赖项。在此之前,我们可以通过运行以下命令查看 Maven 依赖关系:
mvn dependency:tree
mvn dependency:tree
命令打印项目依赖项的树表示。您可以看到 spring-boot-starter-parent
本身不提供任何依赖项。要添加必要的依赖项,请编辑您的 pom.xml
,并在其中添加依赖项:spring-boot-starter-web
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4.3. 编写代码
为了完成我们的应用程序,我们需要创建一个 Java 文件。默认情况下,Maven 从 src/main/java
编译源代码,因此您需要创建该目录结构,然后添加一个名为 src/main/java/MyApplication.java
包含以下代码的文件:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class MyApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
虽然这里没有太多代码,但有很多事情正在发生。我们将在接下来的几节中逐步介绍重要部分。
4.3.1. @RestController
和 @RequestMapping
注解
略
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
方法
main
方法是一种遵循应用程序入口点的 Java 约定的标准方法。我们的 main
方法通过调用 SpringApplication.run
委托给 Spring Boot 的 SpringApplication
类引导我们的应用程序启动 Spring,然后启动自动配置的 Tomcat Web 服务器。我们需要将 MyApplication.class
作为参数传递给 run
方法,让 SpringApplication
判断哪个是主要的 Spring 组件。args
数组也被传递以公开任何命令行参数。
4.4. 运行示例
此时,您的应用程序应该可以工作了。由于您使用了 spring-boot-starter-parent
POM,因此您有一个有用的 run
目标,可用于启动应用程序。从根项目目录键入 mvn spring-boot:run
以启动应用程序。
mvn spring-boot:run
如果您打开 Web 浏览器 localhost:8080
,您应该会看到以下输出:
Hello World!
要优雅地退出应用程序,请按 ctrl-c
4.5. 创建可执行 Jar
可执行 jars(有时称为 fat jars
)是包含已编译类以及代码需要运行的所有 jar 依赖项的存档。
可执行 jar 和 Java
Java 不提供加载嵌套 jar 文件(本身包含在 jar 中的 jar 文件)的标准方法。如果您希望分发一个独立的应用程序,这可能会出现问题。
为了解决这个问题,许多开发人员使用 “uber” jar 。一个 uber jar 将所有应用程序依赖项中的所有类打包到一个存档中。这种方法的问题是很难看到应用程序中有哪些库。如果在多个 jar 中使用相同的文件名(但内容不同),也可能会出现问题。
Spring Boot 采用了 不同的方法 ,让您实际上可以直接嵌套 jar。
要创建一个可执行的 jar,我们需要将 spring-boot-maven-plugin
添加到 pom.xml
。为此,请在 dependencies
部分下方插入以下行:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring-boot-starter-parent
POM 包含绑定repackage
目标的<executions>
配置。如果不使用父 POM,则需要自己声明此配置。有关详细信息,请参阅 插件文档
保存 pom.xml
并从命令行运行 mvn package
mvn package
如果您查看 target
目录,您应该会看到 myproject-0.0.1-SNAPSHOT.jar
。该文件的大小应约为 10 MB。如果你想查看里面内容,你可以使用
jar tvf target/myproject-0.0.1-SNAPSHOT.jar
您还应该在 target
目录中看到一个小得多的 myproject-0.0.1-SNAPSHOT.jar.original
文件。这是它在被 Spring Boot 重新打包之前 Maven 创建的原始 jar 文件。
要运行该应用程序,请使用以下 java -jar
命令:
java -jar target/myproject-0.0.1-SNAPSHOT.jar