一:课程目标基本介绍
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
.
=================================================================================================================================
=====