在正文開始之前我們先來解決一些概念性的問題
🍕🍕🍕 問題1:Spring,Spring MVC,Spring Boot和Spring Cloud之間的區別與聯系?
🍬🍬🍬(1)Spring框架
Spring框架是一個開源的Java企業級應用開發框架,它的核心思想是通過**依賴注入(DI)和面向切面編程(AOP)**來降低組件間的耦合性,增強代碼的可維護性和可測試性。
核心內容:
💙IoC容器(控制反轉):用于管理應用中的對象及其生命周期,提供依賴注入(DI)功能。
💙AOP模塊(面向切面編程):提供聲明式事務管理、日志記錄等功能。
💙數據訪問:簡化了JDBC的使用,提供對ORM框架(如Hibernate)的支持。
💙事務管理:支持聲明式和編程式的事務管理。
💙消息服務:提供JMS(Java Message Service)支持。
💙Web框架:為Web應用提供靈活的支持。
🍬🍬🍬(2)Spring MVC
Spring MVC是Spring框架中的一個Web模塊,它實現了MVC(Model-View-Controller)設計模式。Spring MVC提供了一個靈活的方式來處理Web請求,解耦了請求的處理與業務邏輯。
核心組件:
💙DispatcherServlet:中央調度器,接收所有的HTTP請求并將其轉發給相應的處理器(Controller)。
💙Controller:處理請求并返回相應的模型數據。
💙ModelAndView:封裝了模型數據和視圖信息,用于將模型數據傳遞到視圖層。
💙View Resolver:根據返回的視圖名解析實際的視圖資源。
🍬🍬🍬(3)Spring Boot
Spring Boot是基于Spring的一個開源框架,旨在簡化Spring應用的開發過程。它通過約定優于配置(Convention over Configuration)的方式,減少了開發者的配置工作,并提供了一些開箱即用的功能。
Spring Boot的特點:
💙簡化配置:通過application.properties或者application.yml進行配置,避免了繁瑣的XML配置。
💙嵌入式容器:內置Web容器(如Tomcat、Jetty、Undertow),開發者無需部署WAR包,可以直接啟動應用。
💙自動配置:自動配置Spring和第三方庫(如數據庫連接池、JPA等),使得開發者專注于業務邏輯。
💙生產級功能:Spring Boot集成了諸如Actuator(監控)、Metrics(性能指標)等功能,方便開發者進行應用運維。
🍬🍬🍬(4)Spring Cloud
Spring Cloud是構建分布式系統的開發工具集,它提供了許多用于構建微服務架構的功能。Spring Cloud構建在Spring Boot之上,結合了很多用于分布式系統開發的常見模式和解決方案。
主要模塊:
💙Spring Cloud Netflix:提供了服務發現(Eureka)、負載均衡(Ribbon)、斷路器(Hystrix)等功能。
💙Spring Cloud Config:集中配置管理。
💙Spring Cloud Gateway:API網關,用于路由請求到微服務。
💙Spring Cloud Stream:分布式消息傳遞。
💙Spring Cloud Security:安全認證和授權。
💙Spring Cloud Sleuth:分布式追蹤。
特點:
💙服務注冊與發現:通過Eureka實現服務的自動注冊和發現,支持負載均衡。
💙斷路器模式:通過Hystrix提供的斷路器模式,保證服務的高可用性。
💙API網關:Spring Cloud Gateway作為API網關,提供路由、負載均衡、權限控制等功能。
配置管理:通過Spring Cloud Config實現集中化配置管理。
💙分布式追蹤:支持分布式追蹤,幫助開發者了解系統內部的調用鏈路。
🍬🍬🍬(5)聯系
💙Spring和Spring MVC關系
Spring MVC是Spring框架的一個模塊,負責Web層的開發。它是Spring框架的一部分,利用Spring的核心功能(如IoC、AOP等),為Web應用提供全面的支持。
💙Spring Boot與Spring的關系
Spring Boot基于Spring框架,但它的目標是簡化Spring應用的創建和部署。它通過自動化配置和嵌入式服務器,讓開發者能夠更加高效地開發和部署應用。
💙Spring Cloud與Spring Boot的關系
Spring Cloud構建在Spring Boot之上,利用Spring Boot的特性簡化了分布式系統的開發。Spring Cloud為微服務架構提供了常用的基礎設施組件,而Spring Boot則負責提供應用的快速開發和自動配置。
可以理解為SpringMVC是Spring框架的子模塊,SpringBoot是Spring的擴展版本,SpringCloud又是SpringBoot的擴展,用于微服務架構
🍕🍕🍕問題2:什么是面向切面編程(AOP)
面向切面編程(AOP)通過將橫切關注點(cross-cutting concerns)分離出來,提供了一種增強代碼模塊化和可維護性的方法。
簡單來說,AOP就是將公共的模塊封裝成公共的方法,然后在需要的時候(這個就是切入點),直接就可以調用,而不用在各個對象里面具體的實現。
AOP是一種新的編程方式,它和OOP不同,OOP把系統看作多個對象的交互,AOP把系統分解為不同的關注點,或者稱之為切面(Aspect)。這個可以理解為把系統理解為一個流程,一個對象負責流程上的一個節點。
當然,要徹底理解AOP需要大量的實踐才能理解
🍕🍕🍕問題3:什么是微服務?
💙微服務(Microservices)是一種軟件架構設計模式,它將應用程序分解為小型、自治的服務單元,這些服務單元可以獨立部署、擴展和維護,其中每一個服務單元也都是一個微服務。與分布式操作系統類似
基于微服務形成的軟件架構風格稱為微服務架構(Microservices Architecture),它涵蓋了使用微服務構建應用程序的全套原則、模式和最佳實踐,關注如何將應用程序分解為多個微服務,以及這些服務如何交互、如何維護服務之間的獨立性、如何實現服務的持續交付和部署等。在日常使用中,微服務又常被稱為微服務架構,兩者不區分使用。
說明白概念之后我們進入本文的正題————用IDEA搭建第一個Springboot入門項目
??第一步:新建項目
依次點擊File——New——Project
??第二步:在彈出的框中勾選配置**
注意:
(1)Name可以自己指定,指定完成后Artifat也會跟著變化
(2)Package name等于Group和Artifact連接起來的名稱
(3)Group 和Artifact都可以自己指定
(4)Type要選擇MAVEN不要選GRADLE
(5)JDK要選擇電腦上已經安裝的JDK版本,Springboot2搭載的是JDK8,目前企業級開發支持的是JDK21,我這里使用的是JDK17
(6)打包方式選擇JAR方式打包
(7)左側欄選擇Spring Initializr
(8)全部勾選完點擊next
??第三步:勾選依賴項
注意:
(1)Web下拉框選擇Spring web,選擇完成后右邊框中就會出現對應的名稱
(2)Springboot選擇穩定的版本,我這里是3.5.3,不要選擇快照版(版本號跟SNAPSHOT的),快照版不穩定
??第四步:點擊Create創建成功
注意聯網狀態下才能創建成功
??第五步:創建控制器類包和控制器類(在main文件夾下)
??第六步:在controller包下的BookController類中寫代碼
package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/books")
public class BookController {@GetMappingpublic String getById(){System.out.println("springboot is running...");return "springboot is running";}
}
這段代碼的運行效果是在瀏覽器頁面上輸出springboot is running
??第七步:找見下圖中的DemoApplication右鍵選擇run
注意:
(1)Application是系統自動生成的我們不需要創建
(2)Springboot項目的啟動依賴下圖中的Application和ApplicationTests
??第八步:啟動Springboot項目,如下圖所示
啟動后可以看到Tomcat端口號和8080和訪問路徑“\”
??第九步:通過我們代碼中的路徑查看程序運行效果
@RequestMapping(“/books”)這行代碼給出了一級路徑books,我們在瀏覽器中輸入http://localhost:8080/books就可以出現下圖效果
??第十步:返回瀏覽器查看控制臺信息發現控制臺輸出了springboot is running的信息