最详细springboot官方最新版2.2.5版本教程

时间:2024-03-05 21:31:06

一:课程目标基本介绍

1:官网地址

https://spring.io/projects/spring-boot#learn

image


2:学习目标

   2020年 springboot   官方文档  ===》 springboot  细致了解

  1. springboot  是什么
  2. 为什么是 springboot
  3. springboot 为什么越来越流行
  4. springboot 官方项目构建约定
  5. springboot中第一个hello world
  6. springboot 中第一个helloword 涉及细节
  7. springboot中官网提供的两种配置 java config  和 xml config 不推荐
  8. springboot中标准项目开发方式
  9. spingboot 中对象管理以及对象注入(Injection)相关语法
  10. springboot中整合 jsp 模版 和thymelaf 模版
  11. springboot 中整合 mybatis 简化数据操作
  12. springboot 中日志使用
  13. springboot 中文件上传下载
  14. springboot中如何实现aop(面向切面编程)
  15. springboot 中如何使用拦截器
  16. springboot 中 综合案例
  17. springboot 与 redis 数据库集成操作 综合案例   分布式缓存
  18. springboot 与 ElasticSearch 分布式搜索引擎 技术    综合案例
  19. springboot 与 MongoDB nosql 综合案例
  20. springboot 与 MQ(RabbitMQ)集成 综合案例
  21. springboot  自动配置原理 及官网细节



二:SpringBoot 是什么

image

   springcloud 工具集 、   springboot  微服务 架构    spring cloud data flow 、spring security 、spring session     《==== spring 全家桶

      image

         image

image

  image

     image






如果您要开始使用SpringBoot或一般的“Spring”,请从阅读本节开始。它回答了基本的“什么”,“怎么回事?”还有“为什么”问题。它包括对SpringBoot的介绍,以及安装说明。然后,我们将引导您构建您的第一个SpringBoot应用程序,同时讨论一些核心原则。

1.引入Spring Boot

SpringBoot帮助您创建独立的、生产级的基于Spring的应用程序,您可以运行这些应用程序.我们对Spring平台和第三方库有一个独断专行的看法,这样您就可以以最小的小题大做开始了。大多数SpringBoot应用程序只需要很少的Spring配置。

可以使用SpringBoot创建可以通过以下方式启动的Java应用程序java -jar或者更传统的战争部署。我们还提供了一个运行“Spring脚本”的命令行工具。

我们的主要目标是:

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

  • 不要太固执己见,但当需求开始偏离缺省值时,请尽快离开。

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

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

2.系统要求

SpringBoot2.4.0-快照要求Java 8并且兼容Java 15(包括)。Spring框架5.3.0或以上也是必需的。

为下列构建工具提供了显式构建支持:

构建工具 版本

Maven

3.3+

Gradle

6(6.3或更高版本)。5.6.x也得到支持,但以不推荐的形式提供

2.1.Servlet容器

SpringBoot支持以下嵌入式servlet容器:

名字 Servlet版本

Tomcat 9.0

4.0

Jetty 9.4

3.1

Undertow 2.0

4.0

您还可以将SpringBoot应用程序部署到任何与Servlet3.1+兼容的容器中。

3.安装SpringBoot

SpringBoot可以与“经典”Java开发工具一起使用,也可以作为命令行工具安装。不管怎样,你需要JavaSDK v1.8或者更高。在开始之前,应该使用以下命令检查当前的Java安装:

$ java -version

如果您是Java开发新手,或者您想尝试SpringBoot,您可能需要尝试弹簧启动CLI(命令行接口)。否则,继续阅读“经典”安装说明。

3.1.Java开发人员的安装说明

您可以以与任何标准Java库相同的方式使用SpringBoot。为此,请包括适当的spring-boot-*.jar你的类路径上的文件。SpringBoot不需要任何特殊的工具集成,所以您可以使用任何IDE或文本编辑器。此外,SpringBoot应用程序没有什么特别之处,因此您可以像其他Java程序一样运行和调试SpringBoot应用程序。

虽然你复制SpringBootJars,我们通常建议您使用支持依赖管理(如Maven或Gradle)的构建工具。

3.1.1.Maven安装

SpringBoot与ApacheMaven 3.3或更高版本兼容。如果您还没有安装Maven,可以按照Maven.apache.org.

在许多操作系统上,Maven可以安装包管理器。如果您使用OSX自制,请尝试brew install maven。Ubuntu用户可以运行sudo apt-get install maven。Windows用户巧克力能跑choco install maven从提升的(管理员)提示符。

Spring引导依赖项使用org.springframework.boot groupId。通常,Maven POM文件从spring-boot-starter-parent项目并将依赖项声明为一个或多个。Starters”。SpringBoot还提供了一个可选的Maven plugin来创建可执行的JAR。

有关开始使用SpringBoot和Maven的更多详细信息,请参见Getting Started section Maven插件的参考指南。

3.1.2.分级安装

Spring Boot与第6级(6.3或更高版本)兼容。Gradle 5.6.x也是受支持的,但这种支持是不可取的,并将在以后的版本中删除。如果您还没有安装Gradle,可以按照Gradle.org.

属性可以声明Spring启动依赖项。org.springframework.boot group。通常,项目将依赖项声明为一个或多个“Starters”.Spring Boot提供了一个有用的Gradle plugin 它可以用来简化依赖声明和创建可执行的JAR。

梯度包装

当您需要构建一个项目时,Gradle包装提供了一种很好的“获取”Gradle的方法。这是一个很小的脚本和库,您可以将其与代码一起用于引导构建过程。看见Docs.gradle.org/current/userguide/gradle_wrapper.html关于细节。

有关开始使用SpringBoot和Gradle的更多详细信息,请参见入门部分的参考指南。

3.2.安装SpringBootCLI

SpringBootCLI(命令行接口)是一个命令行工具,您可以使用它快速地使用Spring进行原型。它让你跑Groovy脚本,这意味着您有一个熟悉的类似Java的语法,而没有那么多样板代码。

您不需要使用CLI来使用SpringBoot,但这绝对是获得Spring应用程序的最快方法。

3.2.1.手动安装

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

刀刃快照分布也是可用的。

下载后,按照INSTALL.txt解压档案的说明。总之,有一个spring脚本(spring.bat)中的bin/目录中的.zip档案。或者,您可以使用java -jar带着.jar文件(脚本帮助您确保正确设置了类路径)。

3.2.2.用SDKMAN安装! Installation with SDKMAN!

SDKMAN!(SoftwareDevelopmentKitManager)可用于管理各种二进制SDK的多个版本,包括Groovy和SpringBootCLI。去找SDKMAN!从…Sdkman.io并使用以下命令安装SpringBoot:

$ sdk install springboot
$ spring --version
Spring Boot v2.4.0-SNAPSHOT

如果您为CLI开发特性并希望访问您构建的版本,请使用以下命令:

$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.4.0-SNAPSHOT-bin/spring-2.4.0-SNAPSHOT/
$ sdk default springboot dev
$ spring --version
Spring CLI v2.4.0-SNAPSHOT

的本地实例spring称为dev举个例子。它指向您的目标构建位置,所以每次您重建SpringBoot时,spring是最新的。

通过运行以下命令可以看到它:

$ sdk ls springboot

================================================================================
Available Springboot Versions
================================================================================
> + dev
* 2.4.0-SNAPSHOT

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
3.2.3.OSX自制设备  OSX Homebrew Installation

如果你在mac上使用自制,可以使用以下命令安装SpringBootCLI:

$ brew tap pivotal/tap
$ brew install springboot

自制安装spring/usr/local/bin.

如果您没有看到公式,您的BREW安装可能是过时的。在这种情况下,运行brew update再试一次。
3.2.4.MacPorts安装

如果你在mac上使用麦克波特,可以使用以下命令安装SpringBootCLI:

$ sudo port install spring-boot-cli
3.2.5.命令行完成

SpringBootCLI包括为巴什兹什贝壳。你可以的source脚本(也称为spring)在任何shell中,或将其放在个人或系统范围内的bash完成初始化中。在debian系统上,系统范围内的脚本位于/shell-completion/bash当一个新的shell启动时,该目录中的所有脚本都会被执行。例如,要手动运行脚本(如果您已经使用SDKMAN!安装),请使用以下命令:

$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
  grab  help  jar  run  test  version
如果使用HOMEBREW或MacPorts安装SpringBootCLI,命令行完成脚本将自动注册到shell中。
3.2.6.Windows SCOOP安装

如果您在Windows上并使用铲子,可以使用以下命令安装SpringBootCLI:

> scoop bucket add extras
> scoop install springboot

铲斗安装spring~/scoop/apps/springboot/current/bin.

如果您没有看到应用程序清单,您安装的独家新闻可能是过时的。在这种情况下,运行scoop update再试一次。
3.2.7.快速启动SpringCLI示例

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

@RestController
class ThisWillActuallyRun {

    @RequestMapping("/")
    String home() {
        "Hello World!"
    }

}

然后从shell运行它,如下所示:

$ spring run app.groovy
随着依赖项的下载,应用程序的第一次运行是缓慢的。随后的运行要快得多。

打开localhost:8080在你最喜欢的网页浏览器里。您应该看到以下输出:

Hello World!

3.3.从SpringBoot的早期版本升级

如果您正在从1.x释放SpringBoot,检查项目wiki的“迁移指南”这提供了详细的升级说明。也检查“发布说明”关于每个版本的“新的和值得注意的”特性的列表。

升级到新的特性发行版时,一些属性可能已被重命名或删除。SpringBoot提供了一种在启动时分析应用程序环境和打印诊断信息的方法,但也为您提供了在运行时临时迁移属性的方法。若要启用该功能,请向项目中添加以下依赖项:

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

若要升级现有的CLI安装,请使用适当的包管理器命令(例如,brew upgrade)。如果手动安装了CLI,请按照标准指令,请记住更新PATH环境变量以删除任何旧的引用。

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

本节描述如何开发一个小型的“HelloWorld!”Web应用程序,它突出了SpringBoot的一些关键特性。我们使用Maven构建这个项目,因为大多数IDE都支持它。

这个Spring.io网站包含许多“入门”导轨使用Spring Boot。如果你需要解决一个具体的问题,首先检查那里。

您可以通过以下步骤转到Start.spring.io并从依赖项搜索器中选择“Web”启动器。这样做会生成一个新的项目结构,这样您就可以立即开始编码。检查SpringInitializr文档更多细节。

在开始之前,打开一个终端并运行以下命令,以确保安装了有效版本的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档案。这个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.4.0-SNAPSHOT</version>
    </parent>

    <description/>
    <developers>
        <developer/>
    </developers>
    <licenses>
        <license/>
    </licenses>
    <scm>
        <url/>
    </scm>
    <url/>

    <!-- Additional lines to be added here... -->

    <!-- (you don\'t need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>https://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

上面的清单应该为您提供一个工作构建。您可以通过运行mvn package(现在,您可以忽略“jar将为空-没有标记为包含的内容!”警告)。

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

4.2.添加类路径依赖项

SpringBoot提供了许多“启动器”,允许您在类路径中添加罐子。我们的烟雾测试应用程序使用spring-boot-starter-parentparentPOM的章节。这个spring-boot-starter-parent是一个特殊的启动程序,它提供了有用的Maven默认值。它还提供了一个dependency-management节,以便您可以省略version标记用于“祝福”依赖项。

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

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT

这个mvn dependency:tree命令打印项目依赖项的树表示形式。你可以看到spring-boot-starter-parent本身不提供依赖项。若要添加必要的依赖项,请编辑pom.xml并添加spring-boot-starter-web控件下面的依赖项。parent部分:

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

如果你跑mvn dependency:tree您再次看到,现在有许多附加的依赖项,包括Tomcat Web服务器和SpringBoot本身。

4.3.编写守则

要完成我们的应用程序,我们需要创建一个Java文件。默认情况下,Maven从src/main/java,所以您需要创建目录结构,然后添加一个名为src/main/java/Example.java若要包含以下代码,请执行以下操作:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Example.class, args);
    }

}

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

4.3.1.@RestController和@Requestmap注释

我们的第一个注释Example类是@RestController。这被称为刻板印象注释它为阅读代码的人和Spring提供了提示,说明类扮演了特定的角色。在这种情况下,我们的类是一个web。@Controller,所以Spring在处理传入的Web请求时会考虑它。

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

这个@RestController@RequestMapping注释是SpringMVC注释(它们不特定于SpringBoot)。见MVC部分在Spring参考文档中获得更多细节。
4.3.2.@EnableAutoConfiguration注解

第二个类级注释是@EnableAutoConfiguration。这个注释告诉SpringBoot根据您添加的JAR依赖项“猜测”如何配置Spring。自spring-boot-starter-web加上Tomcat和SpringMVC,自动配置假设您正在开发一个Web应用程序,并相应地设置Spring。

启动器和自动配置

自动配置被设计为与“启动器”很好地工作,但这两个概念并不是直接联系在一起的。您可以在启动程序之外*选择JAR依赖项。SpringBoot仍然尽力自动配置您的应用程序。

4.3.3.“主”法

应用程序的最后一部分是main方法。这是应用程序入口点遵循Java约定的标准方法。我们的主要方法委托给SpringBootSpringApplication通过调用run. SpringApplication引导我们的应用程序,启动Spring,然后启动自动配置的Tomcat Web服务器。我们需要通过Example.class作为对run告知方法SpringApplication这是主要的Spring组件。这个args数组也被传递到公开任何命令行参数。

4.4.运行示例

此时,您的应用程序应该可以工作。因为你用了spring-boot-starter-parent波姆,你有个有用的run可以用来启动应用程序的目标。类型mvn spring-boot:run从根项目目录中启动应用程序。您应该看到类似于以下内容的输出:

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___\'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | \'_ | \'_| | \'_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  \'  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.4.0-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)

如果您打开web浏览器到localhost:8080,您将看到以下输出:

Hello World!

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

4.5.创建可执行的JAR

我们通过创建一个可以在生产中运行的完全独立的可执行JAR文件来完成我们的示例。可执行的JAR(有时称为“FAT JAR”)是包含编译类以及代码运行所需的所有JAR依赖项的档案。

可执行JAR和Java

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

为了解决这个问题,许多开发人员使用“uber”JAR。一个uberjar将所有应用程序依赖项中的所有类打包到一个归档文件中。这种方法的问题是很难看出应用程序中有哪些库。如果在多个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-parentPOM包括<executions>配置来绑定repackage进球。如果不使用父POM,则需要自己声明此配置。见插件文档关于细节。

保存你的pom.xmlmvn 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.4.0-SNAPSHOT:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[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在SpringBoot重新打包之前创建的原始JAR文件。

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

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

  .   ____          _            __ _ _
 /\\ / ___\'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | \'_ | \'_| | \'_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  \'  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.4.0-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)

如前所述,要退出应用程序,请按ctrl-c.















=================================================================================================================================




=====