微服務架構基礎(第2版)-課件 第1-4章 認識微服務架構 -Spring Cloud和常見微服務組件(上)_第1頁
微服務架構基礎(第2版)-課件 第1-4章 認識微服務架構 -Spring Cloud和常見微服務組件(上)_第2頁
微服務架構基礎(第2版)-課件 第1-4章 認識微服務架構 -Spring Cloud和常見微服務組件(上)_第3頁
微服務架構基礎(第2版)-課件 第1-4章 認識微服務架構 -Spring Cloud和常見微服務組件(上)_第4頁
微服務架構基礎(第2版)-課件 第1-4章 認識微服務架構 -Spring Cloud和常見微服務組件(上)_第5頁
已閱讀5頁,還剩335頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第1章

認識微服務架構《微服務架構基礎(SpringBoot+SpringCloud+Docker)(第2版)》學習目標/Target了解系統(tǒng)架構的演變,能夠簡述單體應用架構、垂直應用架構、SOA的特點了解并能夠簡述微服務架構的特點熟悉微服務架構中與服務治理相關的常見概念,能夠簡述微服務架構中的服務注冊與發(fā)現(xiàn)、服務調(diào)用、負載均衡、API網(wǎng)關、服務容錯和鏈路追蹤等概念了解微服務架構的常見相關技術,能夠簡述搭建微服務系統(tǒng)的常見技術章節(jié)概述/Summary隨著社會進步和科技發(fā)展,人們對應用程序的需求不斷增加。面對日益復雜的業(yè)務需求,如何降低業(yè)務之間的耦合性、快速部署項目、輕松且持續(xù)改進項目是應用程序急需解決的問題。為了解決這些問題,微服務架構應運而生,本章將引領讀者深入認識微服務架構。目錄/Contents1.11.2系統(tǒng)架構的演變微服務架構的特點1.3服務架構中與服務治理相關的常見概念1.4微服務架構的常見相關技術系統(tǒng)架構的演變1.11.1系統(tǒng)架構的演變先定一個小目標!

先定一個小目標!了解系統(tǒng)架構的演變,能夠簡述單體應用架構、垂直應用架構、SOA的特點1.1系統(tǒng)架構的演變系統(tǒng)架構是指一個系統(tǒng)的組織結構或設計,其定義了系統(tǒng)的組件、模塊、接口等,在系統(tǒng)中起到指導和約束的作用。隨著互聯(lián)網(wǎng)的飛速發(fā)展和技術的日益演進,系統(tǒng)架構也在不斷演變。從最初的單體應用架構,到如今廣受歡迎的微服務架構,系統(tǒng)架構一直在探求創(chuàng)新,以提高系統(tǒng)的可擴展性、可維護性和可用性,以應對業(yè)務需求和用戶體驗的不斷變化。下將對系統(tǒng)架構的演變進行講解。1.1系統(tǒng)架構的演變單體應用架構指的是將所有服務或者功能都封裝在一個應用中的架構,即應用程序所有業(yè)務場景的表示層、業(yè)務邏輯層和數(shù)據(jù)訪問層都在一個工程中進行開發(fā)、部署和運行。在單體應用架構中,應用程序的各個模塊通過方法調(diào)用或共享內(nèi)存等方式進行通信,通常共享相同的數(shù)據(jù)庫,應用程序的邏輯和數(shù)據(jù)都集中在一起。單體應用架構1.1系統(tǒng)架構的演變1.1系統(tǒng)架構的演變優(yōu)點項目架構簡單,技術結構單一,周期短,前期用人成本低。缺點代碼可讀性、可維護性和可擴展性下降。系統(tǒng)性能擴展只能通過擴展集群結點。應用中的任何一個bug都有可能導致整個系統(tǒng)宕機。1.1系統(tǒng)架構的演變垂直應用架構是一種將應用程序按照業(yè)務邏輯或模塊進行分解和設計的架構,它將單體應用拆分成若干個獨立的小應用,每個小應用單獨部署到不同的服務器上,以提升效率。垂直應用架構1.1系統(tǒng)架構的演變1.1系統(tǒng)架構的演變優(yōu)點拆分成多個應用,分別部署到不同的服務器,減輕服務器壓力。對獨立的Web應用可以單獨進行優(yōu)化,方便水平擴展,提高容錯率。缺點系統(tǒng)之間相互獨立,無法直接進行相互調(diào)用。不同的系統(tǒng)可能存在重復的開發(fā)任務,出現(xiàn)數(shù)據(jù)冗余、代碼冗余、功能冗余等問題。1.1系統(tǒng)架構的演變SOA(Service-OrientedArchitecture,面向服務的體系結構)是一個組件模型,基于SOA可以將系統(tǒng)不同功能單元拆分成獨立的服務,這些服務之間通過定義良好的接口和契約進行聯(lián)系,可以根據(jù)需求通過網(wǎng)絡對松散耦合的粗粒度應用組件(服務)進行分布式部署、組合和使用,從而更加靈活、高效地實現(xiàn)服務的設計、開發(fā)、部署和管理。SOA1.1系統(tǒng)架構的演變1.1系統(tǒng)架構的演變優(yōu)點基于SOA的應用各個服務之間的耦合度較低,可讀性及可維護性比較好。缺點抽取服務的粒度較大,服務提供方與調(diào)用方接口耦合度較高,調(diào)用關系錯綜復雜。1.1系統(tǒng)架構的演變微服務架構是當前較為流行的系統(tǒng)架構之一,它提倡將一個大型、復雜的應用系統(tǒng)拆分成多個獨立的小型服務,每個服務都可以獨立構建、部署、運行、擴展和維護。服務之間通過輕量級的通信機制協(xié)同工作,最終組成一個完整的應用系統(tǒng)。微服務架構在某種程度上是面向服務的架構SOA繼續(xù)發(fā)展的下一步,微服務架構更加強調(diào)服務的徹底拆分。微服務架構1.1系統(tǒng)架構的演變1.1系統(tǒng)架構的演變優(yōu)點通過服務的原子化拆分,每個服務可以獨立打包、部署和升級,小團隊的交付周期將縮短,運維成本也將大幅度下降。缺點對技術成本高,需要解決系統(tǒng)的容錯、分布式事務等問題。如果微服務過多,會造成服務管理成本提高,不利于系統(tǒng)維護,服務拆分粒度過細也會導致系統(tǒng)變得凌亂。微服務架構的特點1.21.2微服務架構的特點先定一個小目標!

先定一個小目標!了解并能夠簡述微服務架構的特點1.2微服務架構的特點微服務架構能夠成為目前主流的架構之一,主要得益于它如下的特點。復雜度可控每個服務專注于特定的業(yè)務功能,每個服務的代碼庫更小,復雜度更低,更容易進行維護。便于部署和維護由于每個模塊只關注自身的功能,修改時只需要關注相關模塊。技術選型靈活允許開發(fā)人員根據(jù)項目業(yè)務需求和團隊特點,選擇不同的編程語言和工具進行開發(fā)和部署。易于擴展擴展新功能只需要新建一個對應的獨立數(shù)據(jù)庫和新的模塊,不需要在現(xiàn)有模塊上進行修改。容錯性高故障會被隔離在單個服務中,其他服務可以繼續(xù)正常運行,不會受到故障的影響。微服務架構中與服務治理相關的常見概念1.31.3微服務架構中與服務治理相關的常見概念先定一個小目標!

先定一個小目標!熟悉微服務架構中與服務治理相關的常見概念,能夠簡述微服務架構中的服務注冊與發(fā)現(xiàn)、服務調(diào)用、負載均衡、API網(wǎng)關、服務容錯和鏈路追蹤等概念1.3微服務架構中與服務治理相關的常見概念微服務架構的主要目的是實現(xiàn)服務的解耦。隨著系統(tǒng)業(yè)務的日趨復雜,使得服務之間的調(diào)用關系變得越來越復雜。同時,服務之間的遠程通信也會因為存在網(wǎng)絡通信問題而變得更加復雜。針對這種情況,需要在微服務架構中進行服務治理,以簡化服務之間的通信關系,提高整體系統(tǒng)的可靠性和穩(wěn)定性。1.3微服務架構中與服務治理相關的常見概念服務注冊中心:微服務架構中的一個獨立組件,它動態(tài)地維護著所有可用服務實例的地址、最新狀態(tài)等信息,并提供服務注冊、服務發(fā)現(xiàn)、健康檢查、負載均衡等功能。服務注冊:指服務將自身的關鍵信息(如服務名稱、地址、版本等)注冊到服務注冊中心,是微服務架構中實現(xiàn)服務發(fā)現(xiàn)和服務之間通信的基礎。服務發(fā)現(xiàn):指服務實例在需要與其他服務通信時,通過服務注冊中心動態(tài)地找到對應服務的信息,并通過這些信息請求所提供的服務。1.服務注冊與發(fā)現(xiàn)1.3微服務架構中與服務治理相關的常見概念目前主流的遠程調(diào)用技術包括基于HTTP的RESTful接口和基于TCP的RPC機制。REST(RepresentationalStateTransfer,表述性狀態(tài)轉移)是一種基于HTTP調(diào)用的標準化格式,可以通過標準的HTTP方法進行調(diào)用,有良好的查錯機制,尤其適合在跨域調(diào)用時使用。RESTful是指遵循REST風格的Web服務,可以使得客戶端和服務器之間的交互更加簡單、直觀。RPC(RemoteProcedureCalls,遠程過程調(diào)用)協(xié)議是一種進程間通信方式,可以讓遠程服務調(diào)用像調(diào)用本地服務一樣簡單和透明。2.服務調(diào)用1.3微服務架構中與服務治理相關的常見概念負載均衡是高可用網(wǎng)絡基礎架構的關鍵組件,通常用于將工作負載分配到多個服務器來提高網(wǎng)站、應用、數(shù)據(jù)庫或其他服務的性能和可靠性。在微服務架構中,因為服務之間的負載大小可能不同,如果不通過合理的分配負載到各個服務實例中,能導致某些服務實例過載而引發(fā)服務性能下降、錯誤率增加、連鎖故障等問題,甚至可能引起整個系統(tǒng)的崩潰。3.負載均衡1.3微服務架構中與服務治理相關的常見概念微服務架構中不同的服務一般會有不同的網(wǎng)絡地址,隨著業(yè)務的新增,系統(tǒng)中的服務日趨增多,外部客戶端調(diào)用不同微服務的接口可能會面臨以下問題??蛻舳诵枰{(diào)用多個不同的網(wǎng)絡地址,增加難度。在某些場景下,可能存在跨域請求問題。每個微服務都需要單獨進行身份認證。4.API網(wǎng)關1.3微服務架構中與服務治理相關的常見概念API網(wǎng)關的基本功能包括統(tǒng)一接入、安全防護、協(xié)議適配、流量管控、長短鏈接支持和容錯能力等,它可以將所有API調(diào)用統(tǒng)一接入到API網(wǎng)關層,由API網(wǎng)關統(tǒng)一接入和輸出,各個API服務提供團隊就可以專注于自己的業(yè)務邏輯處理。4.API網(wǎng)關1.3微服務架構中與服務治理相關的常見概念1.3微服務架構中與服務治理相關的常見概念在微服務架構中,一個請求往往需要調(diào)用多個服務,若其中的某個服務不可用,在沒有做服務容錯的情況下,有可能會導致一連串服務不可用,從而引發(fā)服務雪崩現(xiàn)象,而服務容錯就是確保系統(tǒng)在出現(xiàn)服務故障時,能夠具備自我修復和自我保護的能力。可采用多種技術手段,如重試機制、熔斷機制、限流機制、降級機制等來實現(xiàn)服務容錯,以確保系統(tǒng)具備高可用性和穩(wěn)定性。5.服務容錯1.3微服務架構中與服務治理相關的常見概念在微服務架構中,由于服務之間的相互調(diào)用和依賴關系十分復雜,一旦出現(xiàn)故障或異常,排查問題可能非常困難。通過鏈路追蹤,可以對服務調(diào)用鏈進行跟蹤和監(jiān)測,以快速定位和解決潛在的問題,提高服務的運行效率和可靠性。6.鏈路追蹤微服務架構的常見相關技術1.41.4

微服務架構的常見相關技術先定一個小目標!

先定一個小目標!了解微服務架構的常見相關技術,能夠簡述搭建微服務系統(tǒng)的常見技術1.4

微服務架構的常見相關技術想要真正地搭建一個微服務架構的項目,則需要采用具體的技術。隨著微服務逐漸的流行,很多公司相繼推出了微服務架構的相關技術,其中常見的技術如下。1.服務開發(fā)框架為了快速搭建微服務架構的項目,可以使用服務開發(fā)框架,常見的服務開發(fā)框架有SpringBoot和Dropwizard等。2.服務注冊與發(fā)現(xiàn)為了實現(xiàn)服務之間的通信和發(fā)現(xiàn),可以使用服務注冊與發(fā)現(xiàn)機制。常見的服務注冊與發(fā)現(xiàn)技術包括SpringCloudEureka、Consul、SpringCloudAlibabaNacos等。3.負載均衡為了將負載均勻分配到多個服務實例,提高系統(tǒng)的穩(wěn)定性和可靠性,可以使用負載均衡技術,常見的負載均衡技術有SpringCloudRibbon、SpringCloudLoadBalancer和Dubbo等。1.4

微服務架構的常見相關技術4.服務容錯為了提高系統(tǒng)的可用性和容錯能力,可以使用服務容錯技術,常見的服務容錯技術有Sentinel、Hystrix和Resilience4j等。5.API網(wǎng)關為了將所有服務接口進行統(tǒng)一管理,并實現(xiàn)統(tǒng)一的路由和訪問控制,可以使用API網(wǎng)關,常見的API網(wǎng)關技術包括SpringCloudGateway、Kong等。6.分布式配置中心為了集中管理微服務架構中的配置,減少配置修改的時間和風險,可以是需要分布式配置中心,常見的分布式配置中心有SpringCloudConfig、Apollo和SpringCloudAlibabaNacos等。

1.4

微服務架構的常見相關技術7.分布式鏈路追蹤為了準確追蹤微服務架構中請求在多個微服務之間傳遞時的路由路徑、潛在的性能和耗時等問題,可以使用分布式鏈路追蹤技術,常見的分布式鏈路追蹤技術有Zipkin、SkyWalking和SpringCloudSleuth等。8.分布式事務管理為了在分布式環(huán)境下解決數(shù)據(jù)一致性的問題,可以使用分布式事務管理,常見的分布式事務解決方案有Seata。9.部署在微服務的官方文檔中,推薦使用Docker來打包和部署微服務。Docker是一個開源的應用容器引擎,它允許開發(fā)者將應用及其依賴項打包成標準化的可移植容器,然后發(fā)布到主流的操作系統(tǒng)中。1.4

微服務架構的常見相關技術10.持續(xù)集成持續(xù)集成通過自動化構建、測試和部署流程,確保每次代碼更改都能快速集成到主分支中,并及時進行驗證,減少了集成過程中可能出現(xiàn)的沖突和問題,提高了開發(fā)效率。Jenkins是一個當前廣泛使用的持續(xù)集成工具,它為實現(xiàn)持續(xù)集成提供了強大的支持。本章小結本章主要介紹了微服務架構。首先講解了系統(tǒng)架構的演變;然后講解了微服務架構的特點;接著講解了微服務架構中與服務治理相關的常見概念;最后講解了微服務架構的常見相關技術。通過本章的學習,讀者可以對微服務架構有初步認識,為后續(xù)學習微服務架構奠定基礎。本章小結第2章SpringBoot開發(fā)入門《微服務架構基礎(SpringBoot+SpringCloud+Docker)(第2版)》學習目標/Target了解SpringBoot概述,能夠簡述SpringBoot誕生的背景了解并能夠簡述SpringBoot的特性熟悉SpringBoot原理,能夠簡述SpringBoot起步依賴、自動配置和執(zhí)行流程的原理學習目標/Target掌握SpringBoot入門案例,能夠使用SpringInitializr方式和Maven方式構建SpringBoot項目掌握在全局配置文件中配置數(shù)據(jù)的方法,能夠在perties配置文件和application.yml配置文件中正確配置數(shù)據(jù)掌握配置綁定方式,能夠通過@Value注解和@ConfigurationProperties注解綁定配置文件中的信息章節(jié)概述/SummarySpring框架中的IoC容器可以對組件進行管理,但是為了管理容器中的組件,使用Spring搭建JavaEE應用程序時往往需要進行大量的配置或注解工作,這些工作都屬于項目的基礎搭建工作,通常與業(yè)務功能無關,不熟悉搭建過程的人員在配置時很容易出錯。為了簡化Spring應用的搭建和配置過程,SpringBoot應運而生。SpringBoot是一個基于Spring的全新開源框架,它可以簡化Spring應用的初始搭建和配置過程,使用更加簡單,功能更加豐富。本章將從SpringBoot開發(fā)入門入手,帶領大家正式進入SpringBoot框架的學習。目錄/Contents2.12.2SpringBoot概述SpringBoot入門案例2.3SpringBoot原理解析2.4SpringBoot配置SpringBoot概述2.12.1.1

SpringBoot簡介先定一個小目標!

先定一個小目標!了解SpringBoot概述,能夠簡述SpringBoot誕生的背景2.1.1

SpringBoot簡介在SpringBoot框架出現(xiàn)之前,JavaEE最常用的框架是Spring。Spring是輕量級的Java開源框架,旨在簡化Java企業(yè)級開發(fā)。Spring框架是輕量級的,但它的配置是重量級的。早期版本的Spring專注于XML配置,開發(fā)一個程序需要配置各種XML配置文件。在Spring中使用注解開發(fā)逐漸稱為了主流。SpringSpring4.x基本可以脫離XML配置文件進行項目開發(fā)。2.1.1

SpringBoot簡介Pivotal團隊在原有Spring框架的基礎上通過注解的方式進一步簡化了Spring框架的使用,并在2014年4月正式推出了基于Spring框架的全新框架—SpringBoot。2.1.1

SpringBoot簡介提升Spring開發(fā)者體驗的工具SpringBoot并不是替代Spring框架的解決方案,而是和Spring框架緊密結合用于提升Spring開發(fā)者體驗的工具。構建Spring項目SpringBoot框架本身并不提供Spring框架的核心特性以及擴展功能,它只是使構建Spring應用變得簡單。開箱即用SpringBoot集成了大量常用的第三方庫配置,使用SpringBoot開發(fā)程序時,幾乎是開箱即用。約定優(yōu)于配置開發(fā)過程中大量使用約定優(yōu)于配置的思想來擺脫Spring框架中各種復雜的手動配置。SpringBoot2.1.1

SpringBoot簡介隨著近幾年微服務開發(fā)的需求增長和火爆,如何快速、簡便地構建一個準生產(chǎn)環(huán)境的Spring應用成為擺在開發(fā)者面前的難題,SpringBoot框架的出現(xiàn)恰好完美解決了這些問題,同時內(nèi)部還簡化了許多常用的第三方庫配置,使微服務開發(fā)更加便利,這也間接體現(xiàn)了SpringBoot框架的優(yōu)勢和學習SpringBoot的必要性。2.1.2

SpringBoot的特性先定一個小目標!

先定一個小目標!了解并能夠簡述SpringBoot的特性2.1.2

SpringBoot的特性4.提供大量的自動化配置類。6.基本無須額外生成配置代碼和XML配置文件。5.提供生產(chǎn)就緒功能。1.可快速構建獨立的Spring應用。3.提供固化的“啟動器依賴,簡化構建配置。2.內(nèi)嵌Tomcat、Jetty和Undertow等Web容器,無須將項目打包成WAR文件。SpringBoot的特性SpringBoot入門案例2.22.2.1環(huán)境搭建先定一個小目標!

先定一個小目標!掌握SpringBoot入門案例環(huán)境準備,能夠獨立搭建SpringBoot入門案例所需要準備的環(huán)境2.2.1環(huán)境搭建本書所使用的SpringBoot版本為3.1.4。SpringBoot3.1.4依賴SpringFramework6.0.12,而運行SpringFramework6.0.12需要JDK17及以上版本進行支撐,本書選擇使用本書出版時使用較為廣泛并運行較為穩(wěn)定的JDK17。1.JDKSpringBoot3.1.4官方聲明支持的項目構建工具包括Maven和Gradle,其中Maven的版本需要3.6.3及以上版本,Gradle的版本需要7.5及以上版本。本書將采用Maven3.6.3對SpringBoot進行項目構建管理。2.項目構建工具業(yè)界較為常用有Eclipse和IntelliJIDEA,相比Eclipse而言,IntelliJIDEA的開發(fā)效率更高。在此選擇IntelliJIDEAUltimate的2022.2.2版本進行項目開發(fā)。3.開發(fā)工具環(huán)境準備先定一個小目標!

先定一個小目標!掌握SpringBoot入門案例,能夠使用SpringInitializr方式構建SpringBoot項目2.2.2使用SpringInitializr方式構建SpringBoot項目2.2.2使用SpringInitializr方式構建SpringBoot項目SpringInitializr是一個可以初始化SpringBoot項目的工具,使用SpringInitializr初始化的SpringBoot項目包含了SpringBoot基本的項目結構,可以項目初始化之前對項目所需要的依賴進行選擇。使用SpringInitializr方式構建SpringBoot項目時,需要確保所在主機處于聯(lián)網(wǎng)狀態(tài)下,否則將構建失敗。下面講解如何在IDEA中使用SpringInitializr方式構建SpringBoot項目,并在項目中創(chuàng)建一個SpringMVC程序。2.2.2使用SpringInitializr方式構建SpringBoot項目1.構建SpringBoot項目啟動IDEA,在IDEA歡迎界面依次選擇“Project”→“NewProject”創(chuàng)建項目,在彈出的對話框中選擇左側“SpringInitializr”選項。ServerURL:初始化SpringBoot項目時SpringInitializr工具所在的服務器地址。Name:所創(chuàng)建項目的名稱。Location:所創(chuàng)建項目在本地存放的路徑。Language:所創(chuàng)建項目使用的開發(fā)語言。Type:所使用的項目構建工具。Group:項目的組名。Artifact:項目的名稱。Packagename:包名。JDK:項目使用的JDK。Packaging:項目打包的方式。2.2.2使用SpringInitializr方式構建SpringBoot項目1.構建SpringBoot項目設置好項目的相應信息,其中項目打包方式為Jar。單擊“Next”按鈕,進入SpringBoot場景依賴選擇界面。2.2.2使用SpringInitializr方式構建SpringBoot項目1.構建SpringBoot項目項目中想要添加SpringMVC,可以勾選Web類別下的SpringWeb,創(chuàng)建項目時就會添加SpringWeb的依賴。2.2.2使用SpringInitializr方式構建SpringBoot項目1.構建SpringBoot項目Chapter02Application.java:項目的啟動類,在該類中可以定義啟動項目的方法。static:靜態(tài)資源文件夾。templates:模板頁面文件夾。perties:全局配置文件。pom.xml:Maven工作的主要配置文件。2.2.2使用SpringInitializr方式構建SpringBoot項目1.構建SpringBoot項目Chapter02Application類有一個@SpringBootApplication注解,并且只有一個main()方法。其中,@SpringBootApplication注解用于標注當前類是SpringBoot的配置類,main()方法中調(diào)用SpringApplication類的run()方法來創(chuàng)建Spring容器,運行SpringBoot程序。2.2.2使用SpringInitializr方式構建SpringBoot項目2.編寫SpringMVC控制器在項目com.itheima.chapter02包下創(chuàng)建名稱為controller的包,在該包下創(chuàng)建控制器類HelloController,并在該類中編寫處理請求的方法index()。2.2.2使用SpringInitializr方式構建SpringBoot項目3.運行項目運行文件Chapter02Application.java,啟動程序。2.2.2使用SpringInitializr方式構建SpringBoot項目3.運行項目在瀏覽器上訪問http://localhost:8080/first。2.2.3使用Maven方式構建SpringBoot項目先定一個小目標!

先定一個小目標!掌握SpringBoot入門案例,能夠使用Maven方式構建SpringBoot項目2.2.3使用Maven方式構建SpringBoot項目使用SpringInitializr方式構建SpringBoot項目非常便捷,但是如果當前主機不能聯(lián)網(wǎng)的話,就無法自動下載項目所需的一些依賴,從而導致這種方式無法正常使用。但是SpringBoot項目可以基于Maven構建,如果構建項目所需要使用的依賴在本地Maven倉庫中已經(jīng)存在,則無須聯(lián)網(wǎng)也可以構建SpringBoot項目。下面講解如何在IDEA中使用Maven方式構建SpringBoot項目,并在項目中創(chuàng)建一個SpringMVC程序。2.2.3使用Maven方式構建SpringBoot項目1.構建Maven項目啟動IDEA,在IDEA歡迎界面依次選擇“Project”→“NewProject”創(chuàng)建項目,在彈出的對話框中選擇左側“MavenArchetype”選項。2.2.3使用Maven方式構建SpringBoot項目1.構建Maven項目單擊“MavenArchetype”選項左側界面最上方的“NewProject”創(chuàng)建一個新的Mave項目。單擊后進入“NewProject”選項對應的界面。2.2.3使用Maven方式構建SpringBoot項目1.構建Maven項目設置好創(chuàng)建項目的信息后,單擊“Create”按鈕即可創(chuàng)建Maven項目。Maven項目創(chuàng)建好之后,會默認打開項目的pom.xml文件。2.2.3使用Maven方式構建SpringBoot項目2.添加項目依賴創(chuàng)建一般的Maven項目時,需要手動在pom.xml文件中插入對應的依賴信息。插入項目繼承的工程依賴,以及SpringWeb和測試相關的依賴。<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.4</version><relativePath/></parent>項目繼承的父依賴2.2.3使用Maven方式構建SpringBoot項目2.添加項目依賴<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>SpringWeb的依賴測試相關的依賴2.2.3使用Maven方式構建SpringBoot項目默認情況下,IDEA會監(jiān)視項目中pom.xml文件的變化,在pom.xml文件中導入新依賴或更新原有依賴后,IDEA會通知Maven解析這些更改,并嘗試下載或更新對應的依賴,但有些情況下,依賴可能無法自動下載或更新,這時候就需要手動觸發(fā)依賴的下載或更新,具體操作方法為:右鍵單擊項目名,選擇“Maven”→“Reloadproject”重新加載項目即可。小提示2.2.3使用Maven方式構建SpringBoot項目3.編寫程序啟動類在java文件夾下創(chuàng)建一個名稱為com.itheima.chapter02maven的包,在該包下創(chuàng)建啟動類Chapter02MavenApplication。4.編寫SpringMVC控制器在項目com.itheima.chapter02maven包下創(chuàng)建名稱為controller的包,在該包下創(chuàng)建控制器類HelloController,并在該類中編寫處理請求的方法index()。2.2.3使用Maven方式構建SpringBoot項目5.運行項目運行文件Chapter02MavenApplication.java,啟動程序,控制臺輸出的信息如下圖。2.2.3使用Maven方式構建SpringBoot項目5.運行項目在瀏覽器中訪問http://localhost:8080/first。SpringBoot原理解析2.32.3

SpringBoot原理解析通過SpringBoot入門案例的實現(xiàn),相信大家能夠感受到,與使用Spring整合SpringMVC進行開發(fā)時需要設置煩瑣的依賴和配置信息相比,使用SpringBoot整合SpringMVC只需添加少量的依賴信息即可,開發(fā)過程也比較簡潔。SpringBoot項目中可以簡化依賴配置和常用工程的相關配置信息,這主要依靠它的起步依賴和自動配置。下面結合SpringBoot入門案例對SpringBoot的起步依賴、自動配置和執(zhí)行流程的原理進行分析和講解。2.3.1

起步依賴先定一個小目標!

先定一個小目標!熟悉SpringBoot起步依賴,能夠簡述SpringBoot起步依賴的原理2.3.1

起步依賴起步依賴本質上是一個Maven項目對象模型,該模型中定義了對其它庫的傳遞依賴,SpringBoot提供了眾多起步依賴來降低項目依賴的復雜度。在SpringBoot入門案例中,項目的pom.xml文件中主要引入了兩個啟動器作為當前項目的起步依賴,分別是spring-boot-starter-parent和spring-boot-starter-web。2.3.1

起步依賴1.spring-boot-starter-parent依賴spring-boot-starter-parent中定義了很多常見技術的版本信息,組合成一套最優(yōu)搭配的技術版本。可以在IDEA中按住Ctrl單擊spring-boot-starter-paren進入對應的源碼文件中查看。2.spring-boot-starter-web依賴spring-boot-starter-web就是使用SpringMVC構建Web應用程序的啟動器。不僅包含SpringMVC的依賴信息和Spring整合SpringMVCWeb開發(fā)的依賴信息,還包含了其他的一些依賴信息。2.3.1

起步依賴SpringBoot官方提供了大量的啟動器,其基本都是通過“spring-boot-starter-技術名稱”格式命名,通過啟動器的名稱通??梢灾浪峁┑墓δ?。例如,spring-boot-starter-web表示它提供Web相關的功能,spring-boot-starter-jdbc表示它提供JDBC相關的功能。名稱描述spring-boot-starter-parent核心啟動器,提供了一組默認的配置,這些配置涵蓋了日志、YAML、Maven插件等多個方面,常被作為父依賴spring-boot-starter-logging提供Logging相關的日志功能spring-boot-starter-thymeleaf用于集成Thymeleaf模板引擎到SpringBoot應用程序中spring-boot-starter-web提供了構建Web應用程序所需的依賴項和SpringMVC自動配置,使用Tomcat作為默認的嵌入式容器spring-boot-starter-test支持常規(guī)的測試依賴,包括Junit、Hamcrest、Mockito和spring-test模塊spring-boot-starter-jdbc結合JDBC和HikariCP連接池的啟動器,對數(shù)據(jù)源自動裝配,并提供JdbcTemplate簡化數(shù)據(jù)庫操作常見的SpringBoot應用程序啟動器2.3.1

起步依賴名稱描述spring-boot-starter-data-jpa使用SpringDataJPA與Hibernate的啟動器spring-boot-starter-data-redis用于集成Redis的啟動器,可以自動引入Redis相關的依賴和配置,并提供與SpringBoot集成所需的自動化配置和功能spring-boot-starter-log4j2提供Log4j2相關的日志功能spring-boot-starter-activemq使用ApacheActiveMQ實現(xiàn)的Java消息服務啟動器spring-boot-starter-security使用SpringSecurity的啟動器spring-boot-starter-dubbo提供Dubbo框架的相關功能常見的SpringBoot應用程序啟動器2.3.1

起步依賴SpringBoot官方并沒有為所有開發(fā)場景的技術框架都提供了啟動器,例如,數(shù)據(jù)庫操作框架MyBatis、阿里巴巴的Druid數(shù)據(jù)源等。為了充分利用SpringBoot框架的優(yōu)勢,一些第三方技術廠商主動與SpringBoot框架進行了整合,實現(xiàn)了各自的依賴啟動器,例如,MyBatis提供的啟動器mybatis-spring-boot-starter。不過在項目pom.xml文件中引入這些第三方的啟動器時,需要自行配置對應的依賴版本號。2.3.1

起步依賴spring-boot-starter-parent和普通的starter都使SpringBoot項目簡化了配置,但是他們兩個的功能卻不相同。spring-boot-starter-parent:定義了很多個常見組件或框架的依賴版本號,組合成一套最優(yōu)搭配的技術版本,更便于統(tǒng)一管理依賴的版本,且減少了依賴的沖突。普通的starter:在坐標中定了若干個坐標,減少依賴配置的代碼量。2.3.2

自動配置先定一個小目標!

先定一個小目標!熟悉SpringBoot自動配置,能夠簡述SpringBoot自動配置的原理2.3.2

自動配置SpringBoot采用約定優(yōu)于配置的設計思想,將SpringBoot開發(fā)過程中可能會遇到的配置信息提前配置好,并寫在自動配置的JAR包中。項目啟動時會自動檢測項目類路徑下所有的依賴JAR包,將檢測到的Bean注冊到Spring容器中,并根據(jù)檢測的依賴進行自動配置。2.3.2

自動配置@SpringBootConfiguration標注當前類是一個配置類,它是一個復合注解。1.@SpringBootConfiguration@EnableAutoConfiguration可以用于開啟SpringBoot的自動配置,它也是一個復合注解。2.@EnableAutoConfiguration@ComponentScan注解是一個組件掃描器,其主要作用是掃描指定包及其子包下所有注解類文件作為Spring容器的組件使用。3.@ComponentScan@SpringBootApplication注解2.3.2

自動配置1.

@SpringBootConfiguration查看@SpringBootConfiguration的源碼@SpringBootConfiguration是@Configuration的派生注解,擁有@Configuration注解的功能。@Configuration是@Component的派生注解,所以被@SpringBootApplication標注的類可以被掃描到Spring的IoC容器中。2.3.2

自動配置2.@EnableAutoConfiguration@EnableAutoConfiguration主要通過代碼中的@AutoConfigurationPackage和@Import({AutoConfigurationImportSelector.class})實現(xiàn)自動配置。@AutoConfigurationPackage:主要作用是獲取項目啟動類所在根目錄,從而指定組件掃描器掃描的包位置。@Import({AutoConfigurationImportSelector.class}:導入AutoConfigurationImportSelector類,該類中提供了一個獲取自動配置的方法getAutoConfigurationEntry(),用于篩選出當前項目環(huán)境需要啟動的自動配置類,從而實現(xiàn)當前項目運行所需的自動配置環(huán)境。查看@EnableAutoConfiguration的源碼2.3.2

自動配置@AutoConfigurationPackage也是一個復合注解,其中@Import導入了AutoConfigurationPackages.Registrar類,Registrar類屬于AutoConfigurationPackages類中的靜態(tài)內(nèi)部類,該類中提供了批量注冊組件到Spring容器的方法。查看@AutoConfigurationPackage的源碼2.@EnableAutoConfiguration2.3.2

自動配置(1)從SpringBoot自動配置JAR包的META-INF/spring.factories和META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中獲取所有候選自動配置類。(2)根據(jù)項目pom.xml文件中加入的依賴篩選出最終符合當前項目運行環(huán)境對應的自動配置類。查看@Import({AutoConfigurationImportSelector.class})的源碼2.@EnableAutoConfiguration2.3.2

自動配置3.

@ComponentScan@ComponentScan注解具體掃描的包的根路徑由SpringBoot項目主程序啟動類所在包位置決定,在掃描過程中由前面介紹的@AutoConfigurationPackage注解進行解析,從而得到SpringBoot項目主程序啟動類所在包的具體位置。@ComponentScan(excludeFilters={@Filter(type=FilterType.CUSTOM,classes={TypeExcludeFilter.class}),@Filter(type=FilterType.CUSTOM,classes={AutoConfigurationExcludeFilter.class})})指定掃描時過濾掉不加載到Spring容器的類。在BeanFactory中查找所有類型為TypeExcludeFilter的組件,并去執(zhí)行其自定義的過濾方法。用于過濾其他同時使用@Configuration和@EnableAutoConfigure的類。2.3.3

執(zhí)行流程先定一個小目標!

先定一個小目標!熟悉SpringBoot執(zhí)行流程,能夠基于SpringBoot入門案例簡述SpringBoot的執(zhí)行流程2.3.3

執(zhí)行流程SpringBoot入門案例啟動類的main()方法中只有一行代碼,使用SpringApplication類調(diào)用run()方法,執(zhí)行該行代碼,就啟動了整個SpringBoot項目。為了進一步了解SpringBoot的啟動原理,下面基于SpringBoot入門案例講解SpringBoot的執(zhí)行流程。2.3.3

執(zhí)行流程查看SpringApplication調(diào)用的run()方法的源碼SpringApplication的run()方法中調(diào)用了另一個重載的run()方法,被調(diào)用的重載run()方法內(nèi)部執(zhí)行了兩個操作,分別是創(chuàng)建SpringApplication實例和調(diào)用run()方法。2.3.3

執(zhí)行流程創(chuàng)建SpringApplication實例主要執(zhí)行了如下操作。①

初始化資源加載器,此處將資源加載器置空。②初始化加載資源的類。③推斷當前啟動的項目的類型。④設置應用程序的上下文初始化器。⑤設置應用程序的事件監(jiān)聽器。⑥設置項目的主程序啟動類。1.創(chuàng)建SpringApplication實例2.3.3

執(zhí)行流程run()方法的核心代碼執(zhí)行內(nèi)容。(1)創(chuàng)建啟動上下文對象。(2)獲取并啟動運行監(jiān)聽器。(3)將應用程序參數(shù)封裝為ApplicationArguments類型對象。(4)配置環(huán)境信息ConfigurableEnvironment的基礎的配置信息。(5)配置需要忽略的Bean信息。(6)創(chuàng)建應用程序上下文對象,并設置上下文對象的應用程序啟動器。(7)對應用上下文環(huán)境進行準備。(8)刷新應用程序上下文,初始化IoC容器里面的Bean。(9)調(diào)用了監(jiān)聽器的started()方法,通知監(jiān)聽器上下文啟動完成。2.調(diào)用run()方法查看run()方法執(zhí)行的過程SpringBoot配置2.42.4SpringBoot配置SpringBoot提供了眾多默認配置,這極大提高了應用程序的開發(fā)效率。SpringBoot啟動時會自動讀取應用程序中全局配置文件的配置,開發(fā)者想要根據(jù)自身需求覆蓋SpringBoot的默認配置,可以通過修改全局配置文件實現(xiàn),并通過配置綁定將配置文件中的值與Bean中的屬性進行綁定,使這些配置信息可以在應用程序中使用。下面對SpringBoot配置中的全局配置文件和配置綁定進行講解。2.4.1全局配置文件先定一個小目標!

先定一個小目標!掌握在全局配置文件中配置數(shù)據(jù),能夠在perties配置文件和application.yml配置文件中正確配置數(shù)據(jù)2.4.1全局配置文件SpringBoot默認使用的全局配置文件有perties、application.yml和application.yaml,其中,application.yml與application.yaml文件類型相同,只是為了滿足不同操作系統(tǒng)對文件命名的要求而使用了不同的擴展名。下面對SpringBoot配置中的全局配置文件進行講解。2.4.1全局配置文件1.perties配置文件perties文件中可以定義SpringBoot項目的相關屬性,屬性可采用鍵值對格式進行設置,表示形式為“Key=Value”,這些相關屬性可以是系統(tǒng)屬性、環(huán)境變量、命令參數(shù)等信息,也可以是自定義的屬性。address=beijingserver.port=80spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverperties文件中的屬性支持多種類型,常見的有字面量、數(shù)組和集合。2.4.1全局配置文件(1)字面量類型屬性字面量是指單個的不可拆分的值,例如:數(shù)字、字符串、布爾值等。在perties文件中配置字面量的屬性時,直接將字面量作為Value寫在鍵值對中即可,且默認情況下字符串是不需要使用單引號或雙引號進行修飾的。address=beijingage=132.4.1全局配置文件如果需要配置的屬性為對象的屬性,可以通過“對象名.屬性名”的方式指定屬性的鍵。對象中可能包含多個屬性,在perties文件中為對象的屬性賦值時,一個屬性對應一對鍵值對。user.username=lisiuser.age=18(1)字面量類型屬性2.4.1全局配置文件(2)數(shù)組類型屬性在perties文件中配置數(shù)組類型屬性時,可以將數(shù)組元素的值寫在一行內(nèi),元素值之間使用逗號(,)間隔,也可以在多行分別根據(jù)索引賦值。#方式一user.hobby=swim,travel,cook#方式二user.hobby[0]=swim2user.hobby[1]=travel2user.hobby[2]=cook22.4.1全局配置文件(3)集合類型屬性在perties文件中也可以配置集合類型的屬性,下面分別演示配置List、Set、Map的集合類型屬性。#配置List集合類型屬性(方式一)user.subject=Chinese,English,Math#配置List集合類型屬性(方式二)user.subject[0]=Chineseuser.subject[1]=Englishuser.subject[2]=Math2.4.1全局配置文件(3)集合類型屬性#配置Set集合類型屬性user.salary=120,230#配置Map集合類型屬性(方式一)user.order.1001=cookieuser.order.1002=cake#配置Map集合類型屬性(方式二)user.order[1001]=cookieuser.order[1002]=cake2.4.1全局配置文件2.application.yml配置文件application.yml配置文件是YAML編寫的文件,YAML是”YAMLAin'tMarkupLanguage“的遞歸縮寫。YAML文件通常用于表示數(shù)據(jù)結構和配置信息,它使用縮進的方式表示層級關系,使得配置文件和數(shù)據(jù)結構的表達相對簡潔和易于閱讀。YAML支持的數(shù)據(jù)包括列表、鍵值對和字符串、數(shù)字等。YAML文件的擴展名為.yml或.yaml,編寫時需要遵循如下規(guī)則。使用縮進表示層級關系。

縮進時不允許使用Tab鍵,只允許使用空格??s進的空格數(shù)不重要,但同級元素必須左側對齊。對字母大小寫敏感。2.4.1全局配置文件在YAML文件中使用“Key:Value”的形式表示一對鍵值對,其中,Value前面有一個空格,并且該空格不能省略。在配置字面量類型屬性時,直接將字面量作為Value寫在鍵值對中即可,且默認情況下字符串是不需要使用單引號或雙引號進行修飾的。address:beijingage:13(1)字面量類型屬性2.4.1全局配置文件如果需要配置的屬性為對象的屬性,配置的方式有縮進式和行內(nèi)式兩種。#縮進式consumer:username:lisiage:18#行內(nèi)式consumer:{username:lisi,age:18}(1)字面量類型屬性2.4.1全局配置文件(2)數(shù)組類型和單列集合屬性當YAML配置文件中配置的屬性為數(shù)組類型或單列集合時,也可以使用縮進式寫法和行內(nèi)式寫法。consumer:hobby:-play-readconsumer:hobby:[play,read]or縮進式行內(nèi)式2.4.1全局配置文件(3)Map集合屬性當YAML配置文件中配置的屬性為Map集合時,可以使用縮進式寫法和行內(nèi)式寫法。consumer:order:1001:cookie1002:cakeconsumer:order:{1001:cookie,1002:cake}or縮進式行內(nèi)式多學一招默認配置文件SpringBoot項目將perties或application.yml作為項目的默認配置文件。SpringBoot項目中可以存在多個perties或application.yml,SpringBoot啟動時會掃描以下5個位置的perties和application.yml文件,并將掃描到的文件作為SpringBoot的默認配置文件。

file:./config/*/

file:./config/file:./classpath:/config/

classpath:/多學一招默認配置文件SpringBoot項目將perties或application.yml作為項目的默認配置文件。Spring上述5個位置下如果存在perties和application.yml文件,在項目啟動就都會被加載。加載多個perties或application.yml文件時,文件中的配置會根據(jù)文件所處的位置劃分優(yōu)先級,優(yōu)先級規(guī)則如下。上述位置1~位置5的優(yōu)先級依次降低,序號越小優(yōu)先級越高。位于相同位置的perties的優(yōu)先級高于application.yml,application.yml的優(yōu)先級高于application.yaml。存在相同的配置內(nèi)容時,高優(yōu)先級的內(nèi)容會覆蓋低優(yōu)先級的內(nèi)容。存在不同的配置內(nèi)容時,高優(yōu)先級和低優(yōu)先級的配置內(nèi)容取并集。2.4.2配置綁定先定一個小目標!

先定一個小目標!掌握配置綁定方式,能夠通過@Value注解和@ConfigurationProperties注解綁定配置文件中的信息2.4.2配置綁定在使用SpringBoot全局配置文件配置屬性時,如果配置的屬性是SpringBoot內(nèi)置的屬性(如服務端口server.port),那么SpringBoot會自動掃描并讀取配置文件中的屬性值并覆蓋原有的默認屬性值。如果配置的屬性是用戶自定義的屬性,那么可以通過Java代碼去讀取該配置屬性,并且把屬性值綁定到Bean。在SpringBoot項目中可以通過@Value和@ConfigurationProperties注解綁定配置文件中的信息,下面分別對這兩種配置綁定進行講解。2.4.2配置綁定1.@Value注解@Value注解是由Spring框架提供的,SpringBoot框架從Spring框架中對@Value注解進行了默認繼承,通過@Value可以將配置文件中的屬性值綁定到Bean對象對應的屬性。@ComponentpublicclassPerson{@Value("${person.id}")privateintid;}將配置文件中屬性person.id的值動態(tài)注入到id屬性2.4.2配置綁定下面通過案例演示在SpringBoot項目中使用@Value綁定全局配置文件中的屬性。(1)設置配置信息。在項目的resource文件夾下創(chuàng)建配置文件application.yml,在該配置文件中添加屬性信息。consumer:username:lisiage:23hobby:sing,readsubject:100,1502.4.2配置綁定(2)創(chuàng)建實體類。在chapter02-maven項目的java文件夾下創(chuàng)建類包com.itheima.chapter02maven.domain,并在該類包下創(chuàng)建一個消費者實體類Consumer,在該類上使用@Component進行標注,并在屬性上使用@Value注解注入配置文件中對應屬性的值。(3)創(chuàng)建測試類。在項目test\java目錄下,創(chuàng)建包com.itheima.chapter02maven,在該包下創(chuàng)建測試類Chapter02MavenApplicationTests,在該測試類中注入Consumer對象,并新增一個測試方法進行輸出測試。2.4.2配置綁定(4)測試程序效果。運行測試方法wiredTest()。2.4.2配置綁定2.@ConfigurationProperties注解Java是面向對象的語言,很多情況下,人們習慣將具有相同特性的一組數(shù)據(jù)封裝到一個對象中,SpringBoot中就提供了具有這種功能的注解。SpringBoot的@ConfigurationProperties注解可以

可以將配置文件中的一組配置數(shù)據(jù)同時綁定到Bean中。下面通過案例演示在SpringBoot項目中使用@ConfigurationProperties注解綁定全局配置文件中的數(shù)據(jù)。2.4.2配置綁定(1)修改實體類屬性的綁定方式。在Consumer類上使用@ConfigurationProperties注解進行標注,并且去除屬性上方標注的@Value注解。@Component@ConfigurationProperties(prefix="consumer")publicclassConsumer{privateStringusername;privateintage;privateString[]hobby;privateListsubject;//……setter/getter方法,以及toString()方法}類中的屬性名需要和綁定的配置文件中屬性名保持一致。2.4.2配置綁定(2)新增測試方法。在文件2-3的Chapter02ApplicationTests類中,新增測試方法confTest(),在測試方法中輸出Consumer對象。@TestvoidconfTest(){System.out.println(consumer);}2.4.2配置綁定(3)測試程序效果。運行測試方法confTest()。本章小結本章主要對SpringBoot開發(fā)入門知識進行了講解。首先是SpringBoot概述,然后講解了SpringBoot入門案例,接著結合入門案例對SpringBoot原理進行了解析,最后講解了SpringBoot配置。通過本章的學習,希望大家可以對SpringBoot有初步認識,為后續(xù)更深入學習SpringBoot奠定基礎。本章小結第3章SpringBoot應用進階《微服務架構基礎(SpringBoot+SpringCloud+Docker)(第2版)》學習目標/Target了解SpringMVC自動配置,能夠簡述SpringBoot整合SpringMVC提供的主要自動配置功能了解MyBatis-Plus概述,能夠簡述MyBatis-Plus的特性和框架結構熟悉MyBatis-Plus的基本功能,能夠說出MyBatis-Plus中BaseMapper和IService的常用增刪改查方法熟悉SpringSecurity的認證和授權管理,能夠簡述SpringSecurity的認證和授權管理的方式掌握自定義SpringMVC配置的方法,能夠在SpringMVC中配置靜態(tài)資源映射、視圖控制器、攔截器學習目標/Target掌握SpringBoot整合MyBatis-Plus入門案例,能夠獨立將SpringBoot和MyBatis-Plus進行整合熟悉SpringDataRedis入門的內(nèi)容,能夠簡述SpringDataRedis的定義,以及SpringDataRedis的常見操作掌握SpringBoot整合SpringDataRedis入門案例的內(nèi)容,能夠獨立將SpringBoot和SpringDataRedis進行整合掌握SpringBoot整合SpringSecurity入門案例的內(nèi)容,能夠獨立將SpringBoot和SpringSecurity進行整合,實現(xiàn)用戶認證和授權的應用章節(jié)概述/SummarySpringBoot框架可用于快速搭建和開發(fā)企業(yè)級Java應用,在開發(fā)者社區(qū)中越來越受歡迎。然而,只掌握SpringBoot的基礎知識并不能很好地滿足復雜和龐大應用的需求。隨著應用變得越來越復雜,開發(fā)者需要掌握SpringBoot的高級技術來應對挑戰(zhàn)。SpringBoot的核心優(yōu)勢在于其自動配置和快速集成功能,本章將通過講解SpringBoot整合SpringMVC、MyBatis-Plus、Redis和SpringSecurity,幫助讀者深入學習SpringBoot的進階應用,并掌握更多實用技巧和最佳實踐,以構建可靠、高效和安全的應用程序。目錄/Contents3.13.2SpringBoot整合SpringMVCSpringBoot整合MyBatis-Plus3.3SpringBoot集成Redis3.4SpringBoot整合SpringSecuritySpringBoot整合SpringMVC3.13.1

SpringBoot整合SpringMVC在大多數(shù)SpringBoot應用中,前端MVC框架仍使用SpringMVC,SpringBoot提供的spring-boot-starter-web啟動器中嵌入了SpringMVC相關的依賴,為開發(fā)者提供了大量的自動配置,適用于大多數(shù)Web開發(fā)場景。除了可以使用這些自動配置功能之外,開發(fā)者還可以自定義SpringMVC配置,以更靈活地滿足不同的需求。下面分別對SpringMVC自動配置和自定義SpringMVC配置進行講解。3.1.1

SpringMVC自動配置先定一個小目標!

先定一個小目標!了解SpringMVC自動配置,能夠簡述SpringBoot整合SpringMVC提供的主要自動配置功能3.1.1

SpringMVC自動配置SpringBoot整合SpringMVC提供的自動配置功能主要如下所示。1.簡化配置SpringBoot通過約定優(yōu)于配置的理念,減少了煩瑣的配置步驟。開發(fā)者只需在項目中引入相應的依賴,無須手動配置其他額外的信息,即可快速構建完善的SpringMVC應用。2.提供默認映射路徑SpringBoot自動注冊了DispatcherServlet,并將默認映射路徑設置為“/”,無須手動指定DispatcherServlet和URL映射規(guī)則,簡化了URL配置的過程。3.自動處理靜態(tài)資源SpringBoot提供了自動處理靜態(tài)資源的功能,只需將靜態(tài)資源文件(如CSS、JavaScript、圖片等)放置在特定的目錄下,SpringBoot會自動處理靜態(tài)資源的訪問,無須額外的配置。3.1.1

SpringMVC自動配置4.自動包掃描SpringBoot自動掃描項目中的各個組件,并將它們自動注冊到SpringMVC中,而無須開發(fā)者手動進行組件掃描和注冊的操作。5.自動配置視圖技術SpringBoot支持多種視圖技術,如Thymeleaf、FreeMarker等,開發(fā)者只需添加相應的依賴,即可自動配置并使用這些視圖技術,無須額外的配置。6.自動異常處理SpringBoot提供了默認的異常處理器,自動處理請求過程中產(chǎn)生的常見異常,提高系統(tǒng)的可靠性和容錯性。7.RESTfulAPI支持SpringBoot對RESTfulAPI的支持非常友好,它可以自動處理序列化和反序列化JSON,可以輕松實現(xiàn)基于REST的接口開發(fā)。3.1.2

自定義SpringMVC配置先定一個小目標!

先定一個小目標!掌握自定義SpringMVC配置的方法,能夠在SpringMVC中配置靜態(tài)資源映射、視圖控制器、攔截器3.1.2自定義SpringMVC配置在SpringBoot應用中使用SpringMVC時,如果希望在為SpringMVC自動配置提供相關特性的同時,增加一些自定義的SpringMVC配置,例如添加攔截器、視圖控制器等,可以通過自定義WebMvcConfigurer類型的配置類來實現(xiàn)。下面分別對SpringMVC中的配置靜態(tài)資源映射、視圖控制器、攔截器的方式進行講解。3.1.2自定義SpringMVC配置1.配置靜態(tài)資源映射通常Web應用中會需要使用靜態(tài)資源,例如,JavaScript文件、CSS文件和HTML文件等。單獨使用SpringMVC時,導入靜態(tài)資源文件后,需要配置靜態(tài)資源的映射,否則無法正常訪問。SpringBoot中提供了默認的靜態(tài)資源映射,當訪問項目中任意的靜態(tài)資源時,SpringBoot會默認從以下路徑中進行查找。(1)classpath:/META-INF/resources/(2)classpath:/resources/(3)classpath:/static/(4)classpath:/public/優(yōu)先級從(1)至(4)依次遞減,SpringBoot會先查找優(yōu)先級高的文件夾,再查找優(yōu)先級低的文件夾。3.1.2自定義SpringMVC配置下面演示直接訪問靜態(tài)資源文件夾和非靜態(tài)資源文件夾中資源的效果,首先創(chuàng)建一個名稱為chapter03-springmvc的SpringBoot項目,在項目的pom.xml文件夾中引入spring-boot-starter-web啟動器。然后在項目的src/main/resources目錄下創(chuàng)建文件夾static,接著在

src/main/resources/static和

src/main/resources目錄下分別創(chuàng)建main.html文件和index.html文件,并在項目啟動后分別在瀏覽器中對這兩個靜態(tài)資源進行訪問,訪問結果如下圖所示。3.1.2自定義SpringMVC配置如果想在項目中訪問非默認靜態(tài)資源文件夾下的資源,可以自定義靜態(tài)資源的映射。自定義靜態(tài)資源的映射可以通過配置類和配置文件2種方式實現(xiàn)。(1)通過配置類實現(xiàn)靜態(tài)資源映射通過配置類實現(xiàn)靜態(tài)資源映射時,配置類需要實現(xiàn)WebMvcConfigurer接口,在重寫WebMvcConfigurer接口的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論