【技術積累】Spring Boot中的基礎知識【一】

来源:https://www.cnblogs.com/yyyyfly1/archive/2023/06/26/17504362.html
-Advertisement-
Play Games

博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...


寫在前面

筆者在學校里學習Spring項目的時候,基本上都是老師照著書念PPT,然後演示一些有限的課堂案例,筆者印象很深刻,學校里整個Spring項目也就做了6個課堂練習,而且難度基本上屬於連接上資料庫就算成功,現在看來很簡單的事情,不知道當初為啥搞得這麼辛苦

不怕大家笑話,雖然筆者在學校里的成績尚可,但是筆者直到拿到學位證書的時候,還說不清楚maven依賴是什麼,在工作的時候才逐漸瞭解很多內容,後來必須反覆思考到底出了啥問題

所謂黑貓白貓,抓到耗子就是好貓,因此筆者翻了好些教科書,又找了好些培訓班網課,結合筆者在科班的經歷,後來發現了他們的優缺點在哪

教科書/科班上課

  • 【優點】知識體系比較完整,基本上學校里會把所有的知識點都過一遍,即便是比較次一些的學校也會過一遍基礎,太過高深的東西項目里用的也不多
  • 【優點】有老師指點,學校的教學資源是無限使用的,你不會的問題可以去問老師,不僅學到知識還能怒刷一波平時分好感度
  • 【缺點】知識體系比較反人性,知識點整合不起來,筆者在看書的時候發現,書上的內容往往是一堆零件,要合體成為一個完整的項目光靠讀書是不行的,基本上第一章都是扯一大堆某某技術的發展歷程,但對於需要做項目的人瞭解這些意義真不大
  • 【缺點】學習過程比較繁瑣,筆者更喜歡直接的乾貨,相信很多同學也和筆者一樣,即我問一個問題,直接告訴我答案,而不是我問一個問題給我一大堆書,說答案就在裡面,你找吧,往往你學了幾十頁,項目里某個需求也就用到幾頁甚至幾行而已,你可能不知不覺中用上了都不知道這是哪個知識點
  • 【缺點】做項目過程比較艱難,相信很多同學都跟著書上做項目,但是做著做著往往就和書上的過程走偏了,因為書畢竟是人寫的,有些作者預設你會的東西直接略過去了,事實上很多同學都還不會,往往出現這種情況,連個問的人都沒有
  • 【缺點】學科分類不清,筆者曾經嘗試過把所有的技術都分開,後來發現真心沒啥用,無非是多讀了一些文字罷了,一個項目中往往有些技術結合比較緊密,像MyBatis和Spring其實往往是一起出現的,至少不大有人會扔開Spring單獨去學Mybatis,但是像Spring框架和資料庫mysql或者db2結合就比較鬆散,因此以這個標準決定到底是分開學還是結合學

培訓班上課/網課

  • 【優點】實踐性比較強,很多培訓班基本上都是給你講義,然後帶你做項目,有做完整項目,也有做一堆課堂練習的,確實彌補了課堂實踐性弱的問題,這某種程度上也解釋了為啥有些培訓班出來的同學反而學得好
  • 【優點】針對性比較強,往往培訓班必須掌握的技術他一定會教,做不出一個完整的項目,你肯定會大呼上當受騙,因此你學到的東西一定能保證你做出來一個項目,不管技術含金量高不高
  • 【缺點】老師水平不高,這裡帶點筆者的個人感情色彩,基本上培訓班所謂的老師技術本身也強不到哪裡去,他要真這麼厲害為啥跑來這種地方掙外快,一年七位數還不夠他瀟灑嗎
  • 【缺點】知識體系不完整,培訓班往往帶你找工作,因此功利性非常強,基本上只教必須會的東西,你想額外拓展的概率不是很高
  • 【缺點】填鴨式教育,這我想上過培訓班的大家都有感受,屬於兩個月走完別人四年的道路,這也是培訓班被人嗤之以鼻的最大原因之一

後來筆者在工作以後瞭解到了若依,筆者很佩服該項目的作者,擁有很高超的技術

後來經過筆者的總結,想出了一個理論結合實際的看起來有點蠢的辦法,這個方法在其他項目合集中也會使用,當然估計很多書里其實也用過了

那就是筆者同樣會在該系列做一個項目,當然和若依比起來就差遠了,隨著系列往後,內容也會逐漸完整,我們伴隨著項目完整性的升高逐漸輻射所有的知識點,在做項目的時候給和大家討論技術的完整性,當然有些技術可能不太可能或者不太適合在同一個項目中同時出現,例如不可能又使用Hibernate,又使用Mybatis,這方面沒有關係,我們配合版本管理神器【Git】,代碼可以多版本,也可以回退

系列需求

  • 運行第一個Spring Boot項目

同步環境

這裡做一個補充說明,有些同學可能對筆者用的IDE比較陌生,這裡說一下筆者用的是IDEA 2023.1.1【官網最新版本】破解版

而且對UI做了更新

下載網站:https://www.exception.site/

 

更新UI,另外筆者安裝了中文插件,筆者習慣了中文,因此請同學們自行適應語言

新建項目

使用IntelliJ IDEA創建一個Spring Boot應用程式的步驟如下:

  1. 打開 IntelliJ IDEA,選擇“Create New Project”菜單。
  2. 在彈出的對話框中,選擇“Spring Initializr”選項,類型選擇Maven,並點擊“Next”按鈕。
  3. 在下一步中,選擇所需的依賴和Spring Boot版本,例如Web、JPA、MySQL等。
  4. 點擊“Next”按鈕後,輸入項目的名稱、選擇項目的存儲位置和Java SDK版本,並點擊“Finish”按鈕。IntelliJ IDEA會自動創建一個Spring Boot項目。

 

在選擇“Spring Initializr”選項時,需要選擇“Maven”或“Gradle”構建工具類型。

這取決於你想使用哪種構建工具來管理你的項目。

如果你選擇使用Maven,那麼在下一步中將會看到Maven項目設置選項。同樣的,如果你選擇使用Gradle,那麼在下一步中將會看到Gradle項目設置選項。

在選擇構建工具類型後,點擊“Next”按鈕即可繼續創建Spring Boot應用程式。

 

創建完Spring Boot項目後,需要添加一些必要的依賴。以下是一些常用的依賴:

  1. spring-boot-starter-web:Spring Boot中提供的Web相關依賴,包含Tomcat和Spring MVC。
  2. spring-boot-starter-data-jpa:Spring Boot中提供的JPA相關依賴,使得我們可以方便地使用Hibernate等ORM框架。
  3. spring-boot-starter-security:Spring Boot中提供的安全相關依賴,可以快速集成Spring Security功能。
  4. spring-boot-starter-test:Spring Boot中提供的測試相關依賴,包括JUnit、Mockito等。

要添加這些依賴,可以直接在pom.xml文件中添加。例如,要添加spring-boot-starter-web和spring-boot-starter-data-jpa依賴,可以在pom.xml文件中加入以下內容:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

完成這些步驟後,可以開始編寫Spring Boot應用程式了。

項目介紹

Spring Boot的項目結構通常遵循標準的Maven或Gradle項目結構,並遵循約定優於配置的原則。下麵是一個常見的Spring Boot項目結構的示例:

1. src/main/java:這個目錄下包含了應用程式的Java源代碼文件。
   - com.example.myproject:這是預設的主包名(package)。
      - controller:包含控制器(Controller)類,用於處理HTTP請求。
      - service:包含服務(Service)類,用於處理業務邏輯。
      - repository:包含存儲庫(Repository)類,用於訪問數據存儲。
      - model:包含數據模型(Model)類,用於表示應用程式中的實體和數據對象。
      - Application.java:包含主啟動類,其中的main方法用於啟動Spring Boot應用程式。

2. src/main/resources:這個目錄下包含了應用程式的資源文件。
   - application.properties/application.yml:包含應用程式的配置屬性,如資料庫連接、日誌級別等。
   - static:包含應用程式的靜態資源文件,如html、css、js等。
   - templates:包含應用程式的模板文件,如Thymeleaf模板。

3. src/test/java:這個目錄下包含了應用程式的測試代碼文件,通常與src/main/java下的包結構相同。

4. src/test/resources:這個目錄下包含了應用程式的測試資源文件。

5. pom.xml/gradle.build:這個文件是用來定義項目的依賴和構建配置的。

6. target:這個目錄是構建過程中生成的輸出目錄,包含編譯後的類文件、打包後的可執行jar文件等。

這隻是一個典型的Spring Boot項目結構示例,實際上可以根據需要進行調整和定製。例如,可以將不同的功能模塊放在不同的包下,或者將測試代碼和資源文件放在不同的目錄下等。

實現需求

  • 找到pom.xml,右鍵選中添加為maven項目【該步驟需要已經安裝maven】

  • 為所有項目生成源代碼並更新文件夾

  • 編譯maven依賴項目

  • 安裝maven依賴項目

  • 如果安裝出現問題記得清空已安裝依賴再重新安裝

  • 運行主類

PS:第一次安裝依賴項目可能會非常慢,請大家耐心等待

學習重點

什麼是依賴

在SpringBoot項目中,依賴是指項目所依賴的其他軟體包或模塊。這些依賴通常以Maven或Gradle的形式在項目的構建文件(如pom.xml或build.gradle)中聲明。依賴可以是其他Java庫、框架或工具,也可以是資料庫驅動程式、Web伺服器等。

SpringBoot項目中的依賴通常分為兩種類型:傳遞性依賴和直接依賴。

  • 傳遞性依賴是指項目所依賴的其他軟體包或模塊所依賴的軟體包或模塊,它們會自動被引入到項目中。例如,如果項目依賴於Spring MVC框架,那麼項目中還會自動引入Spring Core和Spring Web模塊。
  • 直接依賴是指項目直接依賴的軟體包或模塊,它們需要在構建文件中顯式聲明。例如,如果項目需要使用MySQL資料庫,就需要在構建文件中添加MySQL的依賴。

通過定義適當的依賴,可以讓SpringBoot項目自動載入所需的庫和配置,並提供必要的功能和特性,簡化了項目的配置和部署過程。

什麼是Maven

Maven是一個開源的項目管理工具,用於構建、管理和發佈Java項目。它提供了一種簡潔的方式來定義和管理項目的依賴關係,自動下載所需的依賴項,並支持項目的編譯、測試、打包和部署。

Maven基於項目對象模型(Project Object Model,POM)的概念,通過一個XML文件來描述項目的結構和依賴關係。POM文件包含項目的配置信息,如項目的坐標(groupId、artifactId和version)、依賴項、插件等。Maven通過讀取POM文件來瞭解項目的配置,然後執行相應的操作。

Maven主要具有以下功能:

  1. 依賴管理:Maven通過中央倉庫來管理項目的依賴項,開發者只需要在POM文件中聲明依賴,Maven會自動下載並安裝相應的依賴項。
  2. 構建和編譯:Maven提供了一套標準的構建過程,支持項目的編譯、測試、打包等操作。開發者可以通過命令行或集成開發環境(IDE)來執行這些操作。
  3. 項目生命周期管理:Maven定義了一套標準的項目生命周期,包括編譯、測試、打包、部署等階段。通過執行不同的命令(如mvn compile、mvn test),開發者可以按照特定的生命周期階段來執行相應的操作。
  4. 插件機制:Maven支持插件機制,開發者可以通過插件來擴展Maven的功能。例如,可以使用Maven插件來自動生成文檔、生成代碼、運行靜態分析等。
  5. 多模塊項目支持:Maven支持構建多模塊項目,可以將一個大型項目拆分為多個子模塊,每個子模塊可以單獨構建和測試,並且可以在父模塊中定義依賴關係。

通過使用Maven,開發者可以更方便地管理和構建Java項目,提高開發效率和代碼質量。它還促進了項目之間的協作和復用,可以輕鬆地共用和重用已經構建好的庫和組件。由於Maven的廣泛應用,許多開源項目都使用Maven作為其項目管理工具。

如何安裝Maven

1. 前往https://maven.apache.org/download.cgi下載最新版的Maven程式:

2. 將文件解壓到D:\Program Files\Apache\maven目錄下:

3. 新建環境變數MAVEN_HOME,賦值D:\Program Files\Apache\maven

4. 編輯環境變數Path,追加%MAVEN_HOME%\bin\;

5. 至此,maven已經完成了安裝,我們可以通過DOS命令檢查一下我們是否安裝成功:

mvn -v

如何在IDEA配置Maven

在設置中搜索Maven,然後把maven路徑給配置上去,路徑儘量用英文

解讀一下代碼是什麼意思

package com.example.springlearning;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringLearningApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringLearningApplication.class, args);
		System.out.println("Hello World!");
	}

}

這段代碼是一個Spring Boot應用程式的入口類,它使用了@SpringBootApplication註解,表示該類是一個Spring Boot應用程式的主類。@SpringBootApplication註解相當於使用了@Configuration、@EnableAutoConfiguration和@ComponentScan三個註解。

其中,@Configuration註解表示該類是一個配置類,@EnableAutoConfiguration註解表示啟用自動配置,@ComponentScan註解表示自動掃描組件。

該類的main方法是程式的入口點,通過調用SpringApplication.run方法來運行Spring Boot應用程式。同時,在main方法中輸出了"Hello World!"。

代碼中的@SpringBootApplication是什麼

@SpringBootApplication是一個Spring Boot的註解,它結合了@Configuration、@EnableAutoConfiguration和@ComponentScan三個註解的功能。

@Configuration註解表示這是一個配置類,它等價於將該類作為Spring配置文件中的一個<bean>配置。

@EnableAutoConfiguration註解表示開啟自動配置功能,它會根據添加的依賴自動配置Spring的各種功能。

@ComponentScan註解表示自動掃描並載入符合條件的組件(比如@Service、@Repository、@Component等),並自動註冊為Spring管理的Bean。

綜合起來,@SpringBootApplication註解可以簡化Spring Boot應用的配置,使得開發者只需要關註核心業務邏輯,而不需要手動配置許多繁瑣的東西。

在黑夜裡夢想著光,心中覆蓋悲傷,在悲傷里忍受孤獨,空守一絲溫暖。 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在。 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概要 先看圖 京豆多的離譜,你的第一想法肯定是:按F12修改了網頁元素 沒那麼簡單,你看支持刷新的 肯定還是假的,通過 Fiddler 或 Wireshark 等抓包工具修改了響應包;或者乾脆改了本地host文件,指向了一個自己寫的頁面...... 這些都太麻煩了,如果能在當前網頁上攔截這個請求 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言: 近期我在項目中就接到了一個完成輪播圖組件的需求。最開始我也像大家一樣,直接選擇使用了知名的開源項目 "Swiper",但是後來發現它在移動端項目中某些測試環境下會白屏一段時間。無論如何調試都不能修複這個問題,於是就自己上手寫了個輪 ...
  • 摘要:export declare const X: Y語法用於在Angular應用程式中聲明一個具有指定類型的常量變數,並將其導出,以便在其他文件中使用。 本文分享自華為雲社區《關於 Angular 應用里的 export declare const X Y 的用法》,作者:Jerry Wang。 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前段時間在看面經的時候,發現很多份面經中都被問到了 強緩存 和 協商緩存。因此我覺得有必要寫一篇文章來好好聊聊這兩者。 強緩存和協商緩存 瀏覽器緩存是瀏覽器在本地磁碟對用戶最近請求過的文檔進行存儲,當訪問者再次訪問同一頁面時,瀏覽器就可以 ...
  • 跨架構平臺試圖解決這個問題,通過提供一個抽象層,將底層架構與應用程式分離開來,從而使得應用程式可以在多種不同的架構上運行。跨架構平臺通常包括以下三個組件 ...
  • # 前言 本文主要講述**適配器模式**,文中使用通俗易懂的案例,使你更好的學習本章知識點並理解原理,做到有道無術。 # 一.什麼是適配器模式 適配器模式是23種設計模式中**結構型模式**的一種,將一個類的介面轉換成客戶希望的另外一個介面。適配器模式使得原本由於介面不相容而不能一起工作的那些類可以 ...
  • 時間過的很快,3 年的疫情就這麼過去了,留下的卻是緊張的社會氛圍。 目前已經在電腦行業 7 年了,記得那是 2015 年,當時我也才 15 歲,正在讀初二。那會特別喜歡別人的網站,比如卡盟,還有代掛等等別人的那些網站,然後我入坑了。我那會百度怎麼做一個網站,然後搜出來需要學習 html,那時候,我 ...
  • ## SSL 簡介 SSL(Secure Socket Layer,安全套接字層)是一種保證網路上的兩個節點進行安全通信的協議。IETF(Interet Engineering Task Force)國際組織對 SSL 作了標準化,制定了 RFC2246 規範,並將其稱為傳輸層安全(Transpor ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...