一:課程目標基本介紹
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.bootgroupId。通常,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.bootgroup。通常,項目將依賴項聲明為一個或多個 “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在 parentPOM的章節。這個 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-parentPOM包括 <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.
=================================================================================================================================
=====






