一、Maven
1、什么是 Maven
? ? ? ? Maven 用于管理項目、管理依賴(通過 POM 文件配置各種各樣的 jar 包)。
????????在沒有 Maven 之前,需要手動將 jar 包導入項目。整個流程:從網上查 jar 包并下載到本地(或者叫同事發)>>手動導入 jar 包。
????????并且為了讓團隊中的所有人使用的 jar 包版本相同(不同可能會引發一些問題,比如接口使用方法變更),就會在源代碼(src)文件下增加 lib 文件存放所有的 jar 包,占用空間很大,這就會導致項目在團隊內部傳輸的過程效率低。
? ? ? ? 在實際商業項目中,因項目龐大,使用的 jar 包很多,不免會產生依賴沖突(版本不一致)。所以當時程序員的第一個工作就是手動理清依賴關系,導入所有需要的依賴,排依賴。
????????而 Maven 只需配置 POM 文件,管理所有依賴,自動從倉庫下載。還能在 IDEA 安裝插件,自動檢測到版本沖突。以及打包項目等操作,都能通過一句 maven 命令完成。
2、創建一個 Maven 項目
? ? ? ? 注意:Maven 和 IDEA 沒有任何關系,可以單獨安裝 Maven,使用 cmd 命令行執行操作(網上找安裝教程,還需要配置環境變量)。只不過 IDEA 集成了 Maven,就不用單獨安裝 Maven 配置環境了。包括 JDK,如果單獨使用 JDK 就需要配置環境變量,通過命令行執行命令。而我們是在 IDEA 中使用 JDK,它已經幫我們自動配置好它的環境了,我們直接用就行。
創建:
項目結構:
maven 命令:
打包:
3、依賴管理
3.1、配置依賴
? ? ? ? 配置 POM 文件。
? ? ? ? 倉庫查詢:Maven Repository: Search/Browse/Explorehttps://mvnrepository.com/????????搜索 mysql,獲取 JDBC 驅動的配置代碼:
? ? ? ? 點擊漏洞,查看詳情:說明新的版本移動到了 mysql-connector-j。
? ? ? ? 版本選擇:
- 指定版本。(例如后續,我們使用 Spring Boot 3.x 及以上,其最低要求 JDK 17)
- 看團隊用的版本。
- 沒有漏洞的。
- 次新版本。(最新版不穩定,可能有坑)
? ? ? ? 我選了一個用的人最多的:
? ? ? ? 這段代碼復制下來,粘貼到 POM:
? ? ? ? 本地倉庫多了兩個 jar 包,一個是 jdbc 驅動,一個是其依賴的 jar 包 protobuf,會自動下載它的依賴(像以前的話,還要手動梳理依賴,然后一個個下載)。
? ? ? ? 這段代碼其實表示,這個 jar 包在中央倉庫中的地址(查詢倉庫會比中央倉庫滯后一點):
? ? ? ? 中央倉庫:Central Repository:https://repo1.maven.org/maven2/? ? ? ? 上面這個 jar 包在中央倉庫的地址就是:
3.2、切換本地倉庫的路徑
? ? ? ? 本地倉庫就是本地存放 jar 包的位置:file>>settings>>搜索maven
? ? ? ? 換位置:把這個默認路徑下的 .m 文件復制到指定位置,在?IntelliJ IDEA 2022.1.4\plugins\maven\lib\maven3\conf 有一個 settings.xml,也復制到 .m 文件里面:
? ? ? ? 改路徑,C 盤里下載的 jar 包就可以刪了,節省空間:
? ? ? ? 中央倉庫、本地倉庫、項目之間的關系:
? ? ? ? 有些 jar 包是公司內部用的,會傳到私服,從私服下載,需要用戶名、密碼,可能 settings.xml 或者 pom.xml 里面有,大概長這樣:
3.3、配置國內鏡像源
? ? ? ? 如果從中央倉庫下載很慢,可以在 settings.xml 里設置國內鏡像源(國內的服務器,中央倉庫的復制,從網上找):
3.4、檢查版本沖突的插件
? ? ? ? 檢查沖突的插件:
? ? ? ? 如果我們不想下載某個 jar 包,比如我們用不到 jdbc 驅動 jar 包中依賴的 protobuf jar 包的部分,想排除?protobuf jar 包,設置 POM 文件:
二、Spring Boot
1、什么是 Spring Boot
? ? ? ? Spring Boot 是對 Spring(Spring Framework) 的進一步包裝,另外還增加了其它功能,比 Spring 更好用。
2、安裝 Spring Boot 插件
? ? ? ? 專業版不需要安裝插件,集成了 Sring Boot。社區版需要安裝。
? ? ? ? 插件商城搜索 Sring Boot Helper,點擊 homepage 進入插件下載頁面(不要直接 Install,新版本要錢)。
? ? ? ? 下載免費版,對應 IDEA 社區版 2021.1.1-2022.1.4(如果不是這些版本,卸載 IDEA,網上找教程,注意注冊表也要卸載):
? ? ? ? 安裝好后,導入本地插件壓縮包:
? ? ? ? 安裝好的插件不要更新:
? ? ? ? 還有在線版的 Sring Boot:Spring Initializrhttps://start.spring.io/? ? ? ? 跟 IDEA 上一樣的,IDEA 就是從網頁版導入的模板:
? ? ? ? 然后就會把項目下載下來,導入(點擊項目里的 POM)到 IDEA 就行,這種不需要下插件(插件只是用來創建 Spring Boot 項目的而已):
3、創建 Spring Boot 項目
? ? ? ? file>>new>>project:Sring Boot 3.X 版本對應 JDK 17,3.X 以下對應 JDK 8(我用的專業版)。國內鏡像:https://start.aliyun.com/
? ? ? ? 第一創建 Sring Boot 項目會很久,耐心等待,這個插件(用于把第三方的 jar 包也打包進去,跟程序在 IDEA 運行無關,跟 maven 打包有關)可能會有下載不下來的情況:
? ? ? ? 我們需要配置國內鏡像源,需要區分兩種情況,我們需要配置的是 New Projects Stetup,每個項目都從國內鏡像源下載:
? ? ? ? 配置方法跟 Settings 一樣:
? ? ? ? 刷新,下載好后:
? ? ? ? 如果是社區版,這里的 RELEASE 要刪除,中央倉庫沒有這個地址(這個 parent 表示 spring boot 是基于此編寫的):
? ? ? ? 這是專業版,這一塊就是社區版的 parent 包含的內容,作用就是 spring boot 幫我們理清了 sprint boot 需要的所有依賴,并且排包:
? ? ? ? 點進去可以看到,列出了很多依賴:
????????這里的測試代碼是指開發人員寫的(不是測試人員的工作),開發人員要寫單元測試用例。這倆版本號沒寫,是跟 spring boot 一致的,代碼能檢測到。
? ? ? ? 這里可以改文件性質:
? ? ? ? 這也能改:
? ? ? ? 寫一個簡單的代碼啟動項目:
? ? ? ? 啟動類里點擊啟動:
? ? ? ? 這個程序會一直運行:
? ? ? ? 打開瀏覽器訪問:
4、什么是 Web 服務器
? ? ? ? Web 服務器就是對 http 協議進行了包裝,不需要我們去實現包裝請求/響應等操作,我們只需要把程序放到 Web 服務器運行即可。目前常用的 Web 服務器就是 Tomcat,由于 Sring Boot 內置了 Tomcat,所以我們不需要單獨配置 Tomcat。Tomcat 的端口號是 8080,所以訪問我們的程序的端口號也是 8080。
? ? ? ? 實際上,Tomcat 上可以運行多個服務(也可以不是 Spring Boot 框架的程序),Spring Boot 也可以不用 Tomcat 部署。但 Tomcat 是內置在 Spring Boot 中的,所以啟動 Sring Boot 項目,本質是啟動了 Tomcat,這個 Tomcat 只能部署這一個項目。因為只部署了一個項目,所以 context path 可以省略。
5、常見的訪問出錯情況
? ? ? ? 4 開頭的一般是客戶端錯誤(一般看瀏覽器 url 跟代碼中注解映射的 path 一致不一致),5 開頭的一般是服務器錯誤(一般看瀏覽器頁面提示和?Tomcat 日志,倒著一段一段看)。
5.1、404
? ? ? ? 404 表示資源不存在:
- url 寫錯了:
- @RestController 注解寫成了?@Controller:
5.2、500
? ? ? ? 服務器崩潰。
- 程序存在異常,沒有處理:
5.3、無法訪問此網站
? ? ? ? 服務器程序未啟動: