【前后端分離的Web系統(tǒng)開(kāi)發(fā) Springboot Vue】系列教程(二)- 后端Springboot項(xiàng)目的創(chuàng)建

【前后端分離的Web系統(tǒng)開(kāi)發(fā) Springboot Vue】系列教程(二)- 后端Springboot項(xiàng)目的創(chuàng)建

本系列教程適合有一定編程語(yǔ)言基礎(chǔ)的,想往Web開(kāi)發(fā)這塊發(fā)展的程序員閱讀,文章盡量用淺顯易懂的語(yǔ)言解釋一些復(fù)雜的概念,并會(huì)針對(duì)一些配置進(jìn)行詳細(xì)的介紹。本系列文章采用的技術(shù)棧是Springboot+Vue

1. Springboot介紹

基本概念

SpringBoot是以Java語(yǔ)言為核心進(jìn)行開(kāi)發(fā)的,由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。通過(guò)這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開(kāi)發(fā)領(lǐng)域成為領(lǐng)導(dǎo)者。
SpringBoot基于Spring4.0設(shè)計(jì),不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過(guò)簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化了Spring應(yīng)用的整個(gè)搭建和開(kāi)發(fā)過(guò)程。另外SpringBoot通過(guò)集成大量的框架使得依賴(lài)包的版本沖突,以及引用的不穩(wěn)定性等問(wèn)題得到了很好的解決。

優(yōu)點(diǎn)

以上是百度百科對(duì)Springboot的介紹,我只截取了一部分,概念眾多,但Springboot到底是什么呢?Springboot的出現(xiàn)是為了解決什么樣的問(wèn)題?我想可以總結(jié)為以下幾個(gè)部分:

  • 采用Maven,Gradle等工具進(jìn)行依賴(lài)管理,并自動(dòng)化構(gòu)建過(guò)程。如果你曾經(jīng)接觸過(guò)這方面的開(kāi)發(fā)培訓(xùn)或者教學(xué),一定記得到處下載XX.jar驅(qū)動(dòng)包的日子吧。萬(wàn)一拿錯(cuò)了版本,又會(huì)出現(xiàn)一大堆問(wèn)題。在Springboot中,不需要了,全部由Maven或者Gradle幫你搞定,你只要在對(duì)應(yīng)的文件中設(shè)定好你要什么包,都會(huì)幫你下載下來(lái),自動(dòng)設(shè)置為依賴(lài)。在Maven項(xiàng)目中,對(duì)應(yīng)的文件是pom.xml
  • 簡(jiǎn)化了Springboot的搭建。還記得純粹的SSM框架或者SSH框架的項(xiàng)目嗎,你要完成這樣一個(gè)項(xiàng)目,需要寫(xiě)一大堆xml文件進(jìn)行配置,然后才能正常啟動(dòng)Spring。在Springboot中,這些基礎(chǔ)的配置全部幫你做好了。
  • 內(nèi)置了Tomacat或者Netty容器。得益于包管理器和自動(dòng)配置的實(shí)現(xiàn),Sprinboot直接內(nèi)置了Web容器,無(wú)需再在自己的電腦上安裝Tomcat了,Springboot項(xiàng)目中內(nèi)置了這些容器,開(kāi)箱即用。
  • 對(duì)開(kāi)發(fā)者友好。上面這么多優(yōu)點(diǎn),核心目的只有一個(gè),對(duì)開(kāi)發(fā)者的開(kāi)發(fā)友好。畢竟,是開(kāi)發(fā)者天天面對(duì)著代碼。簡(jiǎn)潔,結(jié)構(gòu)簡(jiǎn)單易懂,可塑性強(qiáng),開(kāi)發(fā)起來(lái)方便多了。此外,用的人多,網(wǎng)上的教程也多。特別是在寫(xiě)代碼這塊,一定要謹(jǐn)記一點(diǎn),你絕對(duì)不會(huì)是第一個(gè)遇到這個(gè)問(wèn)題的人

缺點(diǎn)

當(dāng)然,凡事有優(yōu)點(diǎn),也會(huì)有缺點(diǎn)。當(dāng)然你會(huì)問(wèn),Springboot是業(yè)界成熟的解決方案,怎么會(huì)有明顯的缺點(diǎn)呢?其實(shí),是有的。正是因?yàn)镾pringboot太成熟了,很多事情他都幫我們開(kāi)發(fā)者干好了,萬(wàn)一開(kāi)發(fā)中出現(xiàn)了問(wèn)題,定位起來(lái)是十分麻煩的。
我曾經(jīng)遇到一個(gè)問(wèn)題,在照葫蘆畫(huà)瓢的項(xiàng)目開(kāi)發(fā)過(guò)程中,多寫(xiě)了一個(gè)注解,直接導(dǎo)致了系統(tǒng)編譯錯(cuò)誤。后面定位了一整天BUG,才發(fā)現(xiàn),原來(lái)那個(gè)注解別有用處,并不是我理解的那樣。一個(gè)注解寫(xiě)的時(shí)候只有一行,甚至只有一個(gè)英文單詞的長(zhǎng)度,但是在spring中,要做的事情可能就非常多了。
所以,終身學(xué)習(xí)很重要

2. 開(kāi)發(fā)環(huán)境

說(shuō)了這么多,實(shí)際上還是要引出重點(diǎn),也就是開(kāi)發(fā)系統(tǒng),寫(xiě)代碼。雖然說(shuō),采用windows系統(tǒng)自帶的記事本寫(xiě)代碼也完全沒(méi)有問(wèn)題,但是我想都0202年了也不至于淪落到這種地步吧。因此呢,用一個(gè)良好的IDE(集成開(kāi)發(fā)環(huán)境)是非常有必要的。

選擇IDE

本教程和后續(xù)的內(nèi)容中,后端Springboot項(xiàng)目都選擇了IDEA作為集成開(kāi)發(fā)環(huán)境

那么,對(duì)于Springboot這種框架的系統(tǒng),大概有以下幾種可選項(xiàng):

  • IntelliJ IDEA(推薦)。好東西,特別好用。Idea可以使用高校后綴的郵箱獲得免費(fèi)使用權(quán)限,或者拿出漂亮的開(kāi)源項(xiàng)目申請(qǐng),當(dāng)然,也可以使用黑科技。
  • Eclipse(合適)。如果你嫌麻煩,想直接搞個(gè)免費(fèi)的,那Eclipse也是一個(gè)比較好的選擇。不過(guò)你需要安裝一些插件來(lái)豐富你的使用體驗(yàn)。
  • 文本編輯器+插件(個(gè)性化定制)。指的是采用vscode,sublime之類(lèi)的純粹的文本編輯器,安裝上一大堆定制的插件,來(lái)個(gè)性化定制使用環(huán)境。好處是這類(lèi)文本編輯器啟動(dòng)起來(lái)很快,插件也能隨心所欲安裝。想搞得很炫酷很與眾不同,可以采用這種方式。

安裝JDK

本教程和后續(xù)的內(nèi)容中,后端Springboot項(xiàng)目采用的JDK版本是9

安裝完了插件是不夠的,還需要到下載適合的JDK來(lái)配置自己本機(jī)的開(kāi)發(fā)環(huán)境。一般來(lái)說(shuō),JDK不是越高越好,要考慮到兼容和后續(xù)的部署問(wèn)題。我個(gè)人喜好采用7或者8的版本進(jìn)行開(kāi)發(fā),視情況而定。
至于如何安裝,可以根據(jù)自己的操作系統(tǒng)百度對(duì)應(yīng)的教程。

安裝Maven

Maven的版本沒(méi)有過(guò)多的要求,只要不是遠(yuǎn)古版本就行了。我個(gè)人采用的是3.6.0

如果你安裝的IDE是Idea,那么Idea會(huì)協(xié)助你安裝maven,如果是其他的IDE,那我就不清楚了。以防萬(wàn)一,還是介紹一下吧。
還記得Maven是什么嗎,對(duì)了,是個(gè)包管理器,協(xié)助你管理jar包。他本身也需要安裝到你的電腦上的??梢缘?Maven官網(wǎng)下載最新版。
安裝的過(guò)程還是比較簡(jiǎn)單的,就不詳細(xì)展開(kāi)了。但是,安裝完了,強(qiáng)烈建議配置一下鏡像源。什么意思呢?Maven的默認(rèn)下載jar包的倉(cāng)庫(kù)是在國(guó)外,數(shù)據(jù)包還得從太平洋底下的光纜傳到上海,再發(fā)送到你的電腦上,就變得特別慢了。因此,可以配置一下國(guó)內(nèi)的鏡像源,下載的包就會(huì)快了很多。
配置Maven鏡像源比較簡(jiǎn)單,百度就能解決問(wèn)題。配置完后,從Maven上下載包明顯快了許多。
————————————————————————————
現(xiàn)在你可以暫時(shí)休息一下,去安裝好IDE和JDK吧
題外話(huà),搜索引擎是個(gè)好東西,盡管搜到的內(nèi)容質(zhì)量參差不齊,但是你要學(xué)會(huì)了分辨真假優(yōu)劣,那你就厲害了。這也就是所謂的“解決問(wèn)題的能力”
畢竟,我這篇教程肯定也是你通過(guò)搜索引擎找到的嘛

3. 項(xiàng)目初始化

講了這么多,終于到了真正的項(xiàng)目初始化環(huán)節(jié)了!按照以下的步驟進(jìn)行項(xiàng)目的建立:

  • 打開(kāi)Idea,選擇“Create New Project”(創(chuàng)建一個(gè)新項(xiàng)目)


    image
  • 左側(cè)項(xiàng)目模板中選擇“Spring Initializr”(Spring項(xiàng)目初始化),然后選擇“Project SDK”(Java版本),其他選項(xiàng)默認(rèn)即可,選擇“Next”進(jìn)入下一步


    image
  • 編輯一下項(xiàng)目的組織名,產(chǎn)品名,包名,介紹等內(nèi)容,定義一下你的項(xiàng)目是要做些什么。這里可以默認(rèn)。當(dāng)然,這里可以在“Type”中切換項(xiàng)目為“Maven項(xiàng)目”或者“Gradle項(xiàng)目”,一般情況,我們默認(rèn)即可。


    image
  • 選擇項(xiàng)目的依賴(lài)。用MySQL要依賴(lài),用Redis要依賴(lài),用百度地圖也要依賴(lài)。這里,我建議先選擇圖片右邊的兩個(gè)個(gè)依賴(lài)。記住,依賴(lài)可以在開(kāi)發(fā)過(guò)程中隨時(shí)添加刪減。


    image
  • 確認(rèn)項(xiàng)目名稱(chēng)和保存的路徑


    image
  • 等待Idea幫你安裝好依賴(lài),然后直接按綠色三角啟動(dòng)項(xiàng)目,控制臺(tái)沒(méi)有報(bào)錯(cuò),就代表了項(xiàng)目啟動(dòng)成功啦!


    image
  • 進(jìn)入 http://localhost:8080/ 如果訪(fǎng)問(wèn)成功,則代表你大功告成了。但是要注意哦,我們現(xiàn)在還沒(méi)有配置任何路徑匹配,所以返回的頁(yè)面代碼是404,也就是未找到頁(yè)面。
    image

4. 結(jié)語(yǔ)

如果你的運(yùn)行很順利

介紹到這里,你已經(jīng)真正完成了一個(gè)Springboot項(xiàng)目的建立,也成功讓項(xiàng)目跑起來(lái)了!
但是,你的項(xiàng)目目前還不具備任何能力對(duì)外提供服務(wù),所有的路徑都是404。不要有挫敗感,盡管不具備功能,但是項(xiàng)目能正常啟動(dòng),代表了接下來(lái)你就可以專(zhuān)心開(kāi)發(fā)了。
下一篇教程,就會(huì)介紹如何跑起來(lái)你的項(xiàng)目中的第一個(gè)接口,以及項(xiàng)目的目錄結(jié)構(gòu)等內(nèi)容的介紹

如果你的運(yùn)行失敗了

不要慌張!如果你是第一次接觸這塊,出問(wèn)題很正常。出了問(wèn)題要怎么辦呢?我給出我自己的經(jīng)驗(yàn),大家可以參考。

  • 要定位問(wèn)題。首先呢,一定要定位問(wèn)題,搞明白這個(gè)問(wèn)題發(fā)生在哪?怎么發(fā)生的?如果你在建立項(xiàng)目時(shí)就彈框報(bào)錯(cuò),那么這個(gè)問(wèn)題一定是你的安裝過(guò)程中出現(xiàn)了問(wèn)題,或者是某種設(shè)置沒(méi)調(diào)整好。如果是在運(yùn)行項(xiàng)目時(shí)出現(xiàn)了報(bào)錯(cuò),一個(gè)很好的定位方式就是看控制臺(tái)異常報(bào)錯(cuò)。如果你什么也不知道,那請(qǐng)善用搜索引擎,比如把報(bào)錯(cuò)信息拿去搜搜,一定能找到問(wèn)題出現(xiàn)的地方,有時(shí)候還能直接找到解決的方法。請(qǐng)記住,你沒(méi)有那么幸運(yùn),你絕對(duì)不會(huì)是第一個(gè)遇到這個(gè)問(wèn)題的人。
  • 要思考問(wèn)題的成因。你會(huì)說(shuō),我都搜索到了解決問(wèn)題的方法了,還想那成因干嘛?請(qǐng)注意了,在你搜索到的解決方案里,可能會(huì)有坑人的解決方案。有的開(kāi)發(fā)者對(duì)于問(wèn)題也是一知半解,他自己瞎折騰,誒,一不小心解決問(wèn)題了,一時(shí)興奮,立刻寫(xiě)了一篇教程發(fā)到網(wǎng)上,告訴你這樣這樣做就能解決問(wèn)題。有沒(méi)有考慮過(guò)問(wèn)題的發(fā)生原因?有沒(méi)有考慮這個(gè)解決方案做了,會(huì)不會(huì)出另外的問(wèn)題?
    我就曾經(jīng)遇到一個(gè)小問(wèn)題,當(dāng)時(shí)是個(gè)小白,新上手一個(gè)服務(wù)器,但是ping不到服務(wù)器上,所以我就去搜解決方案如何開(kāi)端口。那教程咔咔咔寫(xiě)了一堆,告訴我把防火墻關(guān)了,所有問(wèn)題都解決了....還好我機(jī)智,沒(méi)聽(tīng)教程的鬼話(huà),只開(kāi)了需要的端口,你猜怎么著?還是ping不通。原來(lái)啊,那個(gè)服務(wù)器對(duì)外還要經(jīng)過(guò)堡壘機(jī),我個(gè)人沒(méi)有權(quán)力開(kāi)發(fā)對(duì)外訪(fǎng)問(wèn)的端口...
  • 解決問(wèn)題。找到成因,或者找不到成因,但是猜測(cè)解決方案用下去也不會(huì)有什么副作用,那我建議你就先試試。如果一切正常,那最好不過(guò)了。如果還是原來(lái)的問(wèn)題沒(méi)解決,那我建議還原了解決方案,再找一篇新的教程去解決。所謂的控制變量法嘛。
    我個(gè)人建議,代碼層面的修改時(shí),想要還原回去沒(méi)改動(dòng)前的狀態(tài),用git是最好不過(guò)的了。至于git怎么安裝,我會(huì)放在番外里。

最后,感謝大家的支持,下一篇將盡快寫(xiě)出,請(qǐng)看完小廣告再走哦。

5. 小廣告

本人承接中小型的Web系統(tǒng)項(xiàng)目、爬蟲(chóng)程序和系統(tǒng)集成、PC桌面應(yīng)用程序等項(xiàng)目,從設(shè)計(jì)、實(shí)現(xiàn)到部署一條龍服務(wù)
當(dāng)然如果你是在校學(xué)生,在課設(shè)、畢設(shè)方面也有類(lèi)似的需求,也可以和我聯(lián)系,提供有償指導(dǎo),注意,是指導(dǎo)哦。
如果你有意愿想找我開(kāi)發(fā)或者指導(dǎo),請(qǐng)發(fā)生郵件至 wyxworkmail@163.com或者聯(lián)系QQ:3050419833,并簡(jiǎn)單介紹一下你的需求。
如果我自認(rèn)為有能力承擔(dān)你的項(xiàng)目或者接受你的求教,我會(huì)在第一時(shí)間反饋的哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容