zoukankan      html  css  js  c++  java
  • SpringBoot 官方文档中文版

    前言

    最近在看 SpringBoot 的官方文档,写的很清晰,但对于中文的不好的同学,比如我自己,总是遇到不认识的词句,于是乎,我决定把它翻译出来。

    此系列,是结合谷歌翻译+有道翻译,以及我英语四级的水平,仅供学习参考,感谢 SpringBoot 官方整理出如此细致的文档。

    截止目前,SpringBoot 的最新版本是 2.5.3,Spring 的最新版本是 5.3.9.

    翻译出来的目录结构,参考 SpringBoot 的官方文档,选取中间的核心部分。

    SpringBoot 官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/index.html

    1. SpringBoot 介绍

    SpringBoot 帮助您创建可以独立运行的、基于 Spring 的生产级应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您可以从最简单的开始。大多数SpringBoot 应用程序只需要很少的 Spring 配置。

    您可以使用 SpringBoot 创建 Java 应用程序,通过使用 Java -jar 或更传统的 war 包进行部署启动。我们还提供了一个运行 spring 脚本的命令行工具。

    我们的主要目标是:

    • 为所有 Spring 开发提供一个非常快速和广泛可访问的入门体验。

    • 要有自己独特的见解,但当需求开始偏离默认值时,要迅速离开。

    • 提供大类别项目(如嵌入式服务器、安全性、度量、运行状况检查和外部化配置)中常见的一系列非功能特性。

    • 不要代码生成,也不需要 XML 配置。

    2. 系统要求

    SpringBoot2.5.3 需要 Java 8,兼容并包括 Java 16。SpringFramework5.3.9 或更高版本也是必需的。

    构建工具的版本要求:

    构建工具 版本
    Maven 3.5+
    Gradle 6.8.x, 6.9.x, and 7.x

    Servlet 容器

    SpringBoot 支持以下嵌入式 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. 安装 SpringBoot

    Spring Boot 可以与 Java 开发工具一起使用,也可以作为命令行工具安装。无论哪种方式,您都需要 Java SDK v1.8 或更高版本。在开始之前,您应该使用以下命令检查当前的 Java 安装:

    $ java -version
    

    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 .apache.org) 上的说明操作。

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

    译者注:现在使用 IDEA,可以很方便地创建 SpringBoot 项目,不用这么复杂。

    Spring Boot 依赖使用 org.springframework.boot groupId。通常,Maven POM 文件继承 spring-boot-starter-parent 项目,并向一个或多个 “starter”声明依赖项。Spring Boot 还提供了一个可选的 Maven 插件来创建可执行的 jar。

    3.1.2 Gradle 安装

    Spring Boot 与 Gradle 6.8、6.9和7.x兼容。如果你还没有安装 Gradle,你可以按照gradle.org上的说明操作。

    Spring Boot 依赖项可以通过使用 org.springframework.boot 组声明。通常,您的项目会向一个或多个 “starter” 声明依赖项。Spring Boot 提供了一个有用的 Gradle 插件,可以用来简化依赖声明和创建可执行 jar。

    3.2 Spring Boot CLI 安装

    这个用处不大, 暂不翻译。

    具体参考官网:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started

    4. 开发你的第一个 SpringBoot 程序

    spring.io 网站包含许多使用 Spring Boot 的入门指南。如果你需要解决一个特定的问题,首先检查那里。

    您可以通过 start.spring.io并从依赖项搜索器中选择“Web”启动器来快捷执行以下步骤。这样做将生成一个新的项目结构,以便您可以立即开始编码。更多细节请查看start.spring.io用户指南。

    在我们开始之前,打开终端并运行以下命令,以确保您安装了有效的 Java 和 Maven 版本:

    $ java -version
    java version "1.8.0_102"
    Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
    
    $ mvn -v
    Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
    Maven home: /usr/local/Cellar/maven/3.3.9/libexec
    Java version: 1.8.0_102, vendor: Oracle Corporation
    

    4.1 创建 POM

    首先,我们需要创建一个 Maven pom.xml 文件。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.5.3</version>
        </parent>
    
        <!-- Additional lines to be added here... -->
    
    </project>
    

    前面的清单应该提供一个工作的构建。您可以通过运行mvn package来测试它.

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

    4.2 添加类路径依赖

    Spring Boot 提供了许多“启动器”,允许您将 jar 添加到类路径中。我们的冒烟测试应用程序使用 POM 的父部分中的 spring-boot-starter-parent。spring-boot-starter-parent 是一个特殊的启动器,它提供了有用的 Maven 缺省值。它还提供了一个依赖项管理部分,这样您就可以省略其他依赖项的版本标记。

    其他“starter”提供了在开发特定类型的应用程序时可能需要的依赖项。因为我们正在开发一个 web 应用程序,所以我们添加了一个 spring-boot-start-web 依赖项。在此之前,我们可以通过运行以下命令来查看当前拥有的内容:

    $ mvn dependency:tree
    
    [INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
    

    mvn dependency:tree命令打印你的项目依赖项的树状表示。您可以看到 spring-boot-starter-parent 本身不提供依赖项。要添加必要的依赖项,编辑 pomo .xml,并在 parent 部分的正下方添加 spring-boot-start-web 依赖项:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    

    如果您再次运行mvn dependency:tree,您会看到现在有许多额外的依赖项,包括 Tomcat web 服务器和 Spring Boot 本身。

    4.3 写代码

    要完成应用程序,我们需要创建一个 Jav a文件。默认情况下,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 and @RequestMapping 注解

    MyApplication 类上的第一个注解是 @RestController。这被称为原型注释。它为阅读代码的人们以及 Spring 提供了类扮演特定角色的提示。在本例中,我们的类是一个 web @Controller,所以 Spring 在处理传入的 web 请求时考虑它。

    @RequestMapping 注释提供了“路由”信息。它告诉 Spring,任何带有 / 路径的 HTTP 请求都应该映射到 home 方法。@RestController 注释告诉 Spring 将结果字符串直接呈现给调用者。

    @RestController 和 @RequestMapping 注释是 Spring MVC 注释(它们不是特定于 Spring Boot 的)。有关更多细节,请参阅 Spring 参考文档中的 MVC 部分。

    4.3.2 @EnableAutoConfiguration 注解

    第二个类级注释是 @EnableAutoConfiguration。这个注释告诉 Spring Boot 根据您添加的 jar 依赖项“猜测”您想要如何配置 Spring。由于 Spring -boot-start-web 添加了 Tomcat 和 Spring MVC,自动配置假定您正在开发一个 web 应用程序,并相应地设置 Spring。

    Starters 和 Auto-configuration:自动配置被设计成与“starter”一起工作,但是这两个概念并没有直接联系在一起。您可以在启动器之外自由选择 jar 依赖项。Spring Boot 仍然在尽力自动配置应用程序。

    4.3.3 main 方法

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

    4.4 运行示例

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

    $ mvn spring-boot:run
    
      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::  (v2.5.3)
    ....... . . .
    ....... . . . (log output here)
    ....... . . .
    ........ Started MyApplication in 2.222 seconds (JVM running for 6.514)
    

    如果你打开一个 web 浏览器到 localhost:8080,你应该看到以下输出:

    Hello World!
    

    要优雅地退出应用程序,请按 ctrl-c。

    4.5 创建可执行的 jar 包

    我们通过创建一个完全自包含的可执行 jar 文件来完成我们的示例,这个 jar 文件可以在生产环境中运行。可执行jar(有时称为“胖jar”)是包含已编译类以及代码运行所需的所有 jar 依赖项的归档文件。

    Java 没有提供加载嵌套 jar 文件(本身包含在jar中的jar文件)的标准方法。如果您希望分发一个自包含的应用程序,这可能会有问题。

    为了解决这个问题,许多开发人员使用 “uber”jar。一个超级 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 包括 配置来绑定重新打包目标。如果不使用 parent POM,则需要自己声明这个配置。详情请参阅插件文档

    保存您的 pom.xml 文件并从命令行运行 mvn package,如下所示:

    $ mvn package
    
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building myproject 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] .... ..
    [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
    [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
    [INFO]
    [INFO] --- spring-boot-maven-plugin:2.5.3:repackage (default) @ myproject ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    

    如果在 target 目录中查看,应该会看到 myproject-0.0.1-SNAPSHOT.jar。文件大小应该在 10MB 左右。如果你想看看里面,你可以使用 jar tvf,如下所示:

    $ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
    

    您还应该看到一个小得多的文件,名为 myproject-0.0.1-SNAPSHOT.jar。target 目录中的原始文件。这是 Spring Boot 重新打包之前 Maven 创建的原始 jar 文件。

    要运行该应用程序,请使用 java -jar 命令,如下所示:

    $ java -jar target/myproject-0.0.1-SNAPSHOT.jar
    
      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::  (v2.5.3)
    ....... . . .
    ....... . . . (log output here)
    ....... . . .
    ........ Started MyApplication in 2.536 seconds (JVM running for 2.864)
    

    和前面一样,要退出应用程序,请按 ctrl-c。

    5. 接下来读什么

    希望本节提供一些 Spring Boot 基础知识,帮助您编写自己的应用程序。如果您是面向任务类型的开发人员,您可能希望跳过 spring.io,并查看一些入门指南,解决具体的“我如何用 Spring 做那个?”问题。我们还有 Spring boot 特定的“How-to”参考文档。

    否则,下一个合乎逻辑的步骤就是 use.html 进行阅读。如果您真的没有耐心,也可以提前阅读 Spring Boot 的特性

    每天学习一点点,每天进步一点点。

  • 相关阅读:
    fetch
    创建Vue实例传入的option
    Text and Binary modes
    daemon_int
    http 协议 c++代码 获取网页
    asp.net mvc 5 初体验
    win32 音视频相关 api
    setuid和seteuid
    用0x077CB531计算末尾0的个数
    webservice gsoap 小记
  • 原文地址:https://www.cnblogs.com/youcoding/p/15047719.html
Copyright © 2011-2022 走看看