
目錄一、創(chuàng)建你的第一個Maven項目二、Maven 依賴管理1、依賴坐標2、排除依賴 exclusions三、Maven倉庫1、Maven依賴坐標2、Maven倉庫分類2.1 本地倉庫?編輯?編輯2.2 中央倉庫查找Jar的坐標步驟2.3 私有服務器私服Maven 依賴查找順序有私服場景3、簡單工作流程總結4 Maven 設置國內源4.1 配置當前項目的 setting4.2 設置新項目的 setting四、第一個SpringBoot程序4.1 Spring Boot介紹Spring生態(tài)主要項目什么是Spring Boot4.2 Spring Boot項目創(chuàng)建使用Idea創(chuàng)建項目配置參數(shù)說明豆包提供僅供參考創(chuàng)建內部五、jar包下載不下來一、創(chuàng)建你的第一個Maven項目首先idea有吧然后先教你如何快速創(chuàng)建一個SpringBoot的程序。見下如圖打開項目后如圖填好項目名、項目位置、選擇Maven接著來看一般來說打開后會展現(xiàn)如下內容接著我來介紹一下首先需要了解的是這個pom.xml的項目是用來傳遞依賴的那什么是“依賴”呢想像一下你在吃飯那你吃飯是不是需要盤子那么吃飯時你的“盤子就是你的依賴”所以在這里面就是放各種你運行Java代碼所需要的各種第三方文件的。至于從哪里導入是關于“倉庫”這個下文解釋。然后目光來看右側這里有一系列的命令二這里我把豆包給的簡要解釋放到這里大家可以參考Maven 生命周期就是項目構建的一套固定執(zhí)行流程后面的命令執(zhí)行會自動執(zhí)行前面所有階段。clean清理刪除項目編譯生成的 target 目錄把舊編譯產物清空。validate校驗驗證項目配置、pom 文件是否合法。compile編譯把 java 源代碼編譯成 class 字節(jié)碼文件。test測試執(zhí)行項目單元測試代碼。package打包把編譯后的代碼打成 jar/war 包。verify校驗檢查對打包結果做完整性校驗。install安裝把打好的包保存到本地 Maven 倉庫供本機其他項目引用。site生成項目文檔站點。deploy部署把包上傳到遠程私服倉庫給團隊其他人使用。?小知識點 執(zhí)行后面階段會自動執(zhí)行前面全部階段例如執(zhí)行install會自動依次執(zhí)行 validate → compile → test → package → verify → install。 日常開發(fā)最常用clean、compile、package、install。二、Maven 依賴管理Maven 核心能力之一就是依賴管理我們不再需要手動下載、復制 jar 包到項目中全部通過pom.xml配置文件完成 jar 包的引入。依賴項目運行所需要的第三方 jar 包。1、依賴坐標每一個第三方 jar 包都擁有唯一的依賴坐標由三部分組成groupId組織 / 公司 / 開源社區(qū)標識artifactId項目、jar 包名稱version版本號示例MySQL 驅動寫完記得一定要右上角刷新任意一個均可dependencies dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency /dependenciesMaven 就會自動從倉庫下載對應 jar 包到項目中。后續(xù)新增依賴、修改版本都需要執(zhí)行刷新。2、排除依賴 exclusions很多 jar 包會自帶傳遞依賴有時候傳遞過來的包會產生包沖突、依賴沖突。 我們可以使用exclusions標簽把不需要的傳遞依賴排除掉。比如說我這里想排除這個包dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.30/version exclusions exclusion groupIdcom.google.protobuf/groupId artifactIdprotobuf-java/artifactId /exclusion /exclusions /dependency注意exclusion里面不需要寫 version只需要指定groupId和artifactId即可。依賴排除本質上是為了防止版本的沖突這里了解一下暫時不需掌握太深入。PS這里還介紹一個插件--Maven Help不過由于現(xiàn)在階段排除依賴用的比較少所以這里大家感興趣的可以去裝一下流程也給你們三、Maven倉庫OK這里再介紹一個必須了解的概念本地倉庫和遠程倉庫1、Maven依賴坐標我們通過短短幾行代碼就把依賴jar包放在了項目里。dependency groupIdmysql/groupId artifactIdmysql?connector?java/artifactId version8.0.30/version /dependency以上代碼稱之為坐標坐標是唯一的。在Maven中根據(jù)groupId、artifactId、version的配置來唯一識別一個jar包三者缺一不可。當我們在pom文件中配置完依賴之后點擊刷新Maven會根據(jù)坐標的配置去倉庫里尋找Jar包并把它下載下來添加到項目中。這個Jar包下載存放的地方就稱為倉庫。倉庫用于存儲資源管理各種jar包。Maven倉庫的本質就是一個目錄(文件夾)這個目錄被用來存儲開發(fā)中所有依賴jar包插件等。2、Maven倉庫分類Maven倉庫分為兩大類本地倉庫和遠程倉庫。 其中遠程倉庫又分為中央倉庫、私服 和其他公共庫。2.1 本地倉庫本地倉庫就是自己計算機上的一個目錄用來存儲jar包。當項目中引入對應依賴jar包后Maven首先會查找本地倉庫中是否有對應的jar包對應方式如圖如果有則在項目直接引用如果沒有則去遠程中央倉庫中下載對應的jar包到本地倉庫本地倉庫地址查看方式IDEAFile - Settings查看該倉庫目錄可以看到該目錄下有很多的jar。倉庫目錄初始是空的隨著Maven的使用倉庫下文件會越來越多。本地倉庫默認位置這里注意強烈不建議放到C盤否則容易爆滿建議改盤。并且路徑不要給我出現(xiàn)中文改盤步驟CtrlC與CtrlV把.m2文件復制到你想要改的文件路徑上然后修改下圖的位置為新位置第一個是Maven配置文件建議使用國內鏡像可以去網上找我這里使用我自己的配置文件;2.2 中央倉庫中央倉庫是maven軟件中內置一個遠程倉庫地址服務于整個互聯(lián)網由Maven團隊維護全球唯一。倉庫地址Central Repository:可以通過網站https://mvnrepository.com 來查詢并下載jar包。 我們既可以把自己寫好的Jar包上傳到中央倉庫需要滿足一定要求也可以從中央倉庫下載Jar包。查找Jar的坐標步驟1、訪問 https://mvnrepository.com/2、搜索需要的jar例如搜索mysql3、選擇要添加的Jar包版本建議在新的里面選擇次新的使用人數(shù)偏多的。4、復制Jar包對應的maven坐標粘貼到pom.xml的dependency中實操小提示選擇版本的時候盡量避開存在漏洞Vulnerabilities的版本優(yōu)先選擇使用量高、穩(wěn)定的版本。2.3 私有服務器私服私服一般是公司、團隊內部搭建的私有倉庫歸屬于公司或者部門訪問通常需要權限。 引入私服之后Maven 依賴的下載查找順序會發(fā)生改變。Maven 依賴查找順序有私服場景先從本地倉庫獲取如果本地倉庫已經存在該 jar 包直接使用。本地沒有則向私服請求資源私服有資源直接返回。私服也不存在就去中央倉庫下載中央倉庫也找不到直接報錯。如果中央倉庫存在資源會先把資源緩存到私服再緩存到本地倉庫供本次請求使用。小提示私服供團隊多人共用同一個 jar 包團隊只需要第一個人下載一次其他人直接從私服拿取提升團隊開發(fā)效率。整體流程本地倉庫 → 私服 → 中央倉庫。3、簡單工作流程總結pom.xml編寫依賴坐標maven先去本機本地倉庫找jar本地沒有就聯(lián)網去中央遠程倉庫下載下載完成保存到本地倉庫項目直接引用本地倉庫jar包。4 Maven 設置國內源Maven 默認的中央倉庫部署在國外國內直接訪問下載 jar 包速度很慢開發(fā)中一般會配置國內公開鏡像源加速依賴下載。4.1 配置當前項目的 settingIDEA 路徑File → Settings在這里配置的 Maven 配置僅對當前打開的項目生效。4.2 設置新項目的 setting上面的配置只作用于當前項目如果希望之后新建的所有項目都使用同一套 Maven 配置不用反復修改。 只需要讓新項目共用同一個settings.xml配置文件新建項目時確認 Maven 的settings.xml文件路徑即可無需重復編寫鏡像配置。四、第一個SpringBoot程序4.1 Spring Boot介紹在學習SpringBoot之前我們先來了解Spring框架。訪問Spring官方網站Spring | Home。Spring官方對它的定位Spring讓Java編程變得更快、更簡單、更安全。憑借對開發(fā)速度、簡潔性與生產力的追求Spring已經成為全球最流行的Java開發(fā)框架。Spring生態(tài)下提供了大量開源項目覆蓋Web開發(fā)、安全、大數(shù)據(jù)、分布式系統(tǒng)等各個領域形成了一套完整的技術生態(tài)圈日常開發(fā)我們會優(yōu)先選用Spring生態(tài)內的組件解決業(yè)務問題。Spring生態(tài)主要項目上面所有項目底層都基于Spring Framework。但是原生Spring Framework有一個很突出的痛點配置繁瑣、入門門檻高。 為了解決大量XML配置帶來的麻煩Spring推出了Spring Boot用來簡化Spring開發(fā)。什么是Spring Boot我們可以用生活中的腳手架來理解Spring Boot。 蓋房子時腳手架可以幫助工人砌墻、抹灰、裝修核心作用就是更快地把房子搭建出來。Spring Boot就是Spring框架的腳手架專門用來快速開發(fā)Spring應用程序。在沒有Spring Boot之前使用原生Spring開發(fā)我們需要手動引入一大堆依賴、編寫大量xml配置文件配置十分繁瑣。 Spring Boot腳手架就是為了解決這個痛點而生簡化依賴管理、自動裝配大幅降低Spring的開發(fā)成本。4.2 Spring Boot項目創(chuàng)建使用Idea創(chuàng)建因為我們用的Idea社區(qū)版其他版本也同樣適用所以建議自己想辦法去弄個專業(yè)版。新建項目進入項目配置頁面需要填寫項目的各項基礎屬性。項目配置參數(shù)說明豆包提供僅供參考參數(shù)示例值說明Group Idcom.example組織ID一般寫公司/個人反向域名代表項目所屬組織Artifact Iddemo項目ID當前項目的模塊名稱Version0.0.1?SNAPSHOT項目版本SNAPSHOT代表快照開發(fā)測試版本Project typeMaven項目構建類型這里選擇Maven管理項目LanguageJava開發(fā)語言Spring Boot主流使用JavaPackagingJar打包方式Spring Boot項目一般使用Jar包Java version17JDK版本要和本地安裝的JDK保持一致Project namedemo項目名稱本地文件夾顯示的名字Project descriptionDemo project for Spring Boot項目描述對項目的簡單說明Package namecom.example.demo項目包名由GroupIdArtifactId組合而成配置完成之后點擊Next繼續(xù)選擇項目需要引入的依賴確認之后即可生成Spring Boot工程。選擇我框起來的那兩個之一不要用snapshot即可我們做Web開發(fā)所以使用Web項目,創(chuàng)建內部之后可以看到一個默認的啟動類然后我們可以創(chuàng)建我們的第一個Springboot程序然后下面你先模仿的來寫后期會解釋各個注釋的意思OK現(xiàn)在可以隨便打開一個瀏覽器了然后再輸入框輸入回車一下注意只留src和pom文件即可這個也刪了五、jar包下載不下來該咋辦這里附上一張圖不過小羅我目前沒有遇到過這種情況這個也是我在網上找的方法大家可以去嘗試。六、Spring Boot項目目錄Spring Boot可使用Idea或網頁創(chuàng)建它的設計思想是約定大于配置類上標注SpringBootApplication就可以啟動Spring Boot項目。Spring Boot項目有兩個主要的目錄src/main/javaJava 源代碼src/main/resources為靜態(tài)資源或配置文件/static靜態(tài)資源文件夾比如前期學的jscsshtml等靜態(tài)文件不需要服務器數(shù)據(jù)進行綁定的頁面/templates模版資源文件夾主要存放動態(tài)模板文件比如JSPFreemarkerThymeleaf等需要服務器動態(tài)渲染數(shù)據(jù)的文件src/test/java測試代碼源代碼target編譯后的文件路徑pom.xmlmaven配置文件七、Web服務器瀏覽器和服務器兩端進行數(shù)據(jù)交互使用的就是HTTP協(xié)議。前面我們已經學習了 HTTP 協(xié)議知道了 HTTP 協(xié)議就是 HTTP 客戶端和 HTTP 服務器之間的交互數(shù)據(jù)的格式。 Web服務器就是對HTTP協(xié)議進行封裝程序員不需要直接對協(xié)議進行操作(自己寫代碼去解析http協(xié)議規(guī)則)讓Web開發(fā)更加便捷所以Web服務器也被稱為WWW服務器HTTP服務器主要功能是提供網上信息瀏覽服務。常見的Web服務器有Apache,Nginx,IIS,Tomcat,Jboss等。SpringBoot內置了Tomcat服務器無需配置即可直接運行。 Tomcat默認端口號是8080所以我們程序訪問時的端口號也是8080。八、請求響應流程分析瀏覽器輸入URL之后發(fā)起請求就和服務器之間建立了連接。瀏覽器輸入網址http://127.0.0.1:8080/hello通過IP地址127.0.0.1定位到網絡上的一臺計算機127.0.0.1就是本機。通過端口號8080找到計算機上對應的進程也就是在本地計算機中找到正在運行的8080端口的程序。/user/sayhi是請求資源位置資源對計算機而言資源就是數(shù)據(jù)web資源通過網絡可以訪問到的資源通常是指存放在服務器上的數(shù)據(jù)http://127.0.0.1:8080/user/sayhi就是向本地計算機中的8080端口程序獲取資源位置是/user/sayhi的數(shù)據(jù)。 8080端口程序在服務器找/hello位置的資源數(shù)據(jù)發(fā)給瀏覽器。服務器接收到瀏覽器發(fā)送的信息如/user/sayhi在服務器上找到/user/sayhi的資源把資源發(fā)送給瀏覽器九、訪問出錯怎么辦9.1 404404表示用戶訪問的資源不存在。大概率是URL的路徑寫的不正確。錯誤實例1url單詞拼錯錯誤實例2注解寫錯 使用Controller沒有搭配ResponseBody訪問接口也會報404。9.2 500服務器出現(xiàn)內部錯誤。一般是服務器的代碼執(zhí)行過程中遇到了一些特殊情況(服務器異常崩潰)會產生這個狀態(tài)碼。 示例代碼RestController public class UserController { RequestMapping(/sayHi) public String sayHi(){ int res 10/0; return hello,Spring; } }代碼出現(xiàn)除零異常訪問就會返回500狀態(tài)碼。9.3 小結最開始學習Spring的時候會遇到很多問題更多是環(huán)境相關的問題。 我們不僅要學習 Spring 代碼的基本寫法更重要的是學習排查錯誤的思路。程序猿調試BUG如同醫(yī)生診病。 一個有經驗的程序猿和一個新手程序猿相比最大的優(yōu)勢往往不是代碼寫的多好而是調試效率有多高。同一個問題可能新手花了幾天都無法解決的但是有經驗的程序猿可能幾分鐘就搞定了。熟悉 HTTP 協(xié)議能讓我們調試問題事半功倍。4xx的狀態(tài)碼表示路徑不存在往往需要檢查 URL 是否正確和代碼中設定的 Context Path 以及 Servlet Path 是否一致。5xx的狀態(tài)碼表示服務器出現(xiàn)錯誤往往需要觀察頁面提示的內容和 Tomcat 自身的日志觀察是否存在報錯。出現(xiàn)連接失敗往往意味著服務沒有正確啟動也需要觀察服務的自身日志是否有錯誤提示。觀察日志是調試程序的重要途徑。系統(tǒng)日志往往很多需要同學們耐心閱讀經常閱讀熟練了就能更快速的找到問題了。十、總結Spring Boot 是為了快速開發(fā) Spring 而誕生的Spring Boot 具備Spring Boot 提供了啟動添加依賴的功能可以快速集成框架。內置web服務器無需配置 Tomcat 等Web服務器直接運行和部署程序??梢酝耆珤仐壏爆嵉?XML使用注解和配置的方式進行開發(fā)。支持更多的監(jiān)控的指標可以更好的了解項目的運行情況等特點。