2020年最詳細springboot官方最新版2.2.5版本教程



一:課程目標基本介紹

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-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。

啟動器和自動配置

自動配置被設計為與“啟動器”很好地工作,但這兩個概念並不是直接聯系在一起的。您可以在啟動程序之外自由選擇JAR依賴項。SpringBoot仍然盡力自動配置您的應用程序。

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和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-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.















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




=====


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM