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
posted @ 2022-06-08 07:47  流星<。)#)))≦  阅读(26)  评论(0编辑  收藏  举报