2020年最详细springboot官方最新版2.2.5版本教程
一:课程目标基本介绍
1:官网地址
https://spring.io/projects/spring-boot#learn
2:学习目标
2020年 springboot 官方文档 ===》 springboot 细致了解
- springboot 是什么
- 为什么是 springboot
- springboot 为什么越来越流行
- springboot 官方项目构建约定
- springboot中第一个hello world
- springboot 中第一个helloword 涉及细节
- springboot中官网提供的两种配置 java config 和 xml config 不推荐
- springboot中标准项目开发方式
- spingboot 中对象管理以及对象注入(Injection)相关语法
- springboot中整合 jsp 模版 和thymelaf 模版
- springboot 中整合 mybatis 简化数据操作
- springboot 中日志使用
- springboot 中文件上传下载
- springboot中如何实现aop(面向切面编程)
- springboot 中如何使用拦截器
- springboot 中 综合案例
- springboot 与 redis 数据库集成操作 综合案例 分布式缓存
- springboot 与 ElasticSearch 分布式搜索引擎 技术 综合案例
- springboot 与 MongoDB nosql 综合案例
- springboot 与 MQ(RabbitMQ)集成 综合案例
- springboot 自动配置原理 及官网细节
二:SpringBoot 是什么
springcloud 工具集 、 springboot 微服务 架构 spring cloud data flow 、spring security 、spring session 《==== spring 全家桶
如果您要开始使用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。
有关开始使用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.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都支持它。
您可以通过以下步骤转到 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-parent
在 parent
POM的章节。这个 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。
4.3.3.“主”法
应用程序的最后一部分是 main
方法。这是应用程序入口点遵循Java约定的标准方法。我们的主要方法委托给SpringBoot SpringApplication
通过调用 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,我们需要添加 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包括 <executions>
配置来绑定 repackage
进球。如果不使用父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.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.original
在 target
目录。这是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
.
=================================================================================================================================
=====
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/