1.引子
大家好,在接下里的一段時(shí)間里庸娱,我會(huì)給大家詳細(xì)的介紹SpringBoot的基本使用着绊,相信學(xué)完這門課程以后,你會(huì)對SpringBoot有一個(gè)清晰的認(rèn)識(shí)熟尉,并且能夠運(yùn)用這門比較新穎的技術(shù)開發(fā)一些小程序归露。我也希望,這門課程能夠?qū)Υ蠹胰腴TSpringBoot框架起到一個(gè)良好的助推作用斤儿。
在開始之前剧包,我們先來看一看傳統(tǒng)的JavaWeb開發(fā)存在哪些問題。首先往果,第一點(diǎn)疆液,配置繁多。不管你之前用的是SSH框架陕贮,還是SSM框架堕油,都一定對項(xiàng)目內(nèi)部大量的配置文件感到頭疼。所以肮之,繁瑣的配置是JavaWeb項(xiàng)目開發(fā)的一個(gè)顯著的特點(diǎn)掉缺。
第二點(diǎn),開發(fā)效率低戈擒。注意眶明,這里說開發(fā)效率低,并不是指Java開發(fā)本身的效率低筐高,因?yàn)楹芏嗟谌絡(luò)ar包的出現(xiàn)呢搜囱,幫我們做了大量的整合,所以我們做Java開發(fā)更多的是在調(diào)用jar包內(nèi)的方法凯傲。因此犬辰,寫代碼相對而言是比較輕松的嗦篱。而我們這邊所說的開發(fā)效率低下冰单,更多的是指一個(gè)web項(xiàng)目配置太多,整合技術(shù)繁瑣灸促。
第三點(diǎn)诫欠,部署麻煩涵卵。很多情況下,我們開發(fā)一個(gè)web項(xiàng)目荒叼,最后需要打成一個(gè)war包轿偎,然后部署到一個(gè)諸如Tomcat的Servlet容器上。復(fù)雜的部署流程被廓,使得我們部署一個(gè)web項(xiàng)目坏晦,不太容易。
正因?yàn)樯鲜鋈齻€(gè)問題的存在嫁乘,SpringBoot可以說是應(yīng)運(yùn)而生昆婿。看到這里蜓斧,有同學(xué)可能會(huì)問了仓蛆,SpringMVC我用過,SpringBoot和它是什么關(guān)系呢挎春?其實(shí)SpringBoot 是SpringMVC的升級(jí)版看疙,兩者沒有必然的關(guān)系。因此直奋,哪怕你沒有SpringMVC的基礎(chǔ)能庆,直接上手SpringBoot也是沒有太大問題的。
2.SpringBoot的優(yōu)缺點(diǎn)
接下來脚线,我們來說一下SpringBoot它的優(yōu)缺點(diǎn)相味。
第一點(diǎn),簡化配置殉挽。這個(gè)剛才我們也說到了丰涉,傳統(tǒng)web開發(fā),配置是一件讓無數(shù)開發(fā)者頭疼的事情斯碌,而SpringBoot可以讓你拋掉那些繁瑣的配置一死,也可以快速開發(fā)web項(xiàng)目。那它是如何實(shí)現(xiàn)的呢傻唾?SpringBoot運(yùn)用了一種叫做“約定大于配置”的理念投慈。對于那些大量的配置,都采用了一種默認(rèn)的約定冠骄,讓你不需要再進(jìn)行配置伪煤,或者運(yùn)用很少的配置就可以搭建項(xiàng)目。其實(shí)凛辣,它就做了一件事情抱既,內(nèi)部集成了大量的第三方技術(shù),讓你拿來就用扁誓,而不需要自己去配防泵。就好像一部智能手機(jī)蚀之,內(nèi)置了很多常用的APP,比如淘寶捷泞,微信足删,QQ等。有了這些內(nèi)置的應(yīng)用锁右,我們就不需要一次次地去網(wǎng)上下載和安裝失受,省下了很多的時(shí)間。
對于那些常用的app咏瑟,反正我們都是要用的贱纠,因此,與其我們自己一個(gè)個(gè)去下載响蕴,安裝谆焊,還不如手機(jī)默認(rèn)就幫我們配置好了。這樣來的干脆利落浦夷,不拖泥帶水辖试,讓人心情愉快。
同樣的道理劈狐,一個(gè)web項(xiàng)目罐孝,必然要配置監(jiān)聽器,數(shù)據(jù)源肥缔,IOC莲兢,AOP等。與其我們每次都手動(dòng)去寫配置文件续膳,還不如直接在框架里就默認(rèn)幫我們配好改艇,這樣同樣是干脆利落,不拖泥帶水坟岔,讓人心情更加愉快谒兄。
如此看來,約定大于配置是一個(gè)非常有用和先進(jìn)的理念社付。
第二點(diǎn)承疲,獨(dú)立運(yùn)行。什么叫獨(dú)立運(yùn)行呢鸥咖,那就是燕鸽,我們以前開發(fā)web項(xiàng)目,是在項(xiàng)目搭建好了之后啼辣,部署到一個(gè)諸如Tomcat的Servlet容器中運(yùn)行的啊研。而SpringBoot不一樣,它自己內(nèi)部就嵌入了一個(gè)Servlet容器,你可以把它理解為內(nèi)部集成了一個(gè)Tomcat悲伶。這樣一來,我們最終運(yùn)行的只是一個(gè)jar包而已住涉!你直接運(yùn)行就可以了麸锉,不需要再去部署到Tomcat。
3.SpringCloud與微服務(wù)
相信大家還聽過一個(gè)“微服務(wù)”的概念舆声,什么叫做微服務(wù)呢花沉?以一個(gè)電商項(xiàng)目為例,若干年前媳握,如果我們搭建一個(gè)電商項(xiàng)目碱屁,會(huì)把所有的功能都塞在一個(gè)項(xiàng)目里面。慢慢的蛾找,隨著項(xiàng)目越來越大娩脾,人們發(fā)現(xiàn)這樣的項(xiàng)目維護(hù)起來非常困難,于是引入子系統(tǒng)的概念打毛,把不同的業(yè)務(wù)功能單獨(dú)拆分出來柿赊,各自做一個(gè)子系統(tǒng)。比如訂單子系統(tǒng)幻枉,用戶子系統(tǒng)碰声,物流子系統(tǒng)。并且通過maven實(shí)現(xiàn)每個(gè)項(xiàng)目之間的依賴關(guān)系熬甫。
而微服務(wù)又是什么意思呢胰挑,簡單來說,就是在子系統(tǒng)的基礎(chǔ)上再進(jìn)行一次細(xì)分椿肩,把不同的業(yè)務(wù)功能細(xì)分為一個(gè)個(gè)小型的服務(wù)瞻颂,比如訂單服務(wù),用戶服務(wù)郑象,物流服務(wù)等蘸朋。每個(gè)服務(wù)單獨(dú)運(yùn)行,獨(dú)立維護(hù)扣唱,相互之間可以采用HTTP技術(shù)進(jìn)行通訊藕坯。這樣一來,實(shí)現(xiàn)最大程度的解耦噪沙,哪怕其中一個(gè)服務(wù)奔潰了炼彪,也不會(huì)影響整個(gè)系統(tǒng)的運(yùn)行。
JavaWeb搭建微服務(wù)架構(gòu)一樣不太容易正歼,為此Spring的團(tuán)隊(duì)專門打造了一個(gè)SpringCloud辐马,來解決這個(gè)問題。
有的同學(xué)要問了局义,我是不是一定要學(xué)會(huì)了SpringCloud才可以搭建項(xiàng)目呢喜爷?當(dāng)然不是冗疮,其實(shí)在我們學(xué)會(huì)了SpringBoot之后,就可以自己做很多項(xiàng)目了檩帐。
好术幔,剛才我們說了SpringBoot的優(yōu)點(diǎn),現(xiàn)在來看一下它的缺點(diǎn)湃密。硬要說缺點(diǎn)的話诅挑,我想SpringBoot因?yàn)槭且婚T比較新的技術(shù),因此目前網(wǎng)上關(guān)于它的資料還比較缺少泛源,所以對于初學(xué)者拔妥,在學(xué)習(xí)SpringBoot的過程中,難免會(huì)遇到一些困難达箍,這是一個(gè)不算缺點(diǎn)的缺點(diǎn)没龙。在這里,我給初學(xué)者一個(gè)建議缎玫,那就是兜畸,暫時(shí)拋開使用Tomcat的習(xí)慣,之前我們說過碘梢,SpringBoot內(nèi)嵌了一個(gè)Servlet容器咬摇,因此,它是不需要部署到Tomcat中去的煞躬。之前的一些使用習(xí)慣肛鹏,反而會(huì)對自己的學(xué)習(xí)造成阻礙,這個(gè)我會(huì)在后面講到恩沛。
4.教程目錄
最后在扰,我們來看一下本課程的目錄。首先雷客,我會(huì)給大家寫一個(gè)SpringBoot的入門案例芒珠,可以算是SpringBoot版本的HelloWorld。第二點(diǎn)搅裙,我會(huì)介紹SpringBoot中一些常用的注解皱卓,以及我們?nèi)绾问褂眠@些注解。第三部逮,我給大家?guī)硪粋€(gè)基于SpringBoot的項(xiàng)目實(shí)戰(zhàn)娜汁,聊天機(jī)器人。這個(gè)項(xiàng)目實(shí)戰(zhàn)會(huì)全程貫穿整個(gè)課程兄朋,我始終相信掐禁,任何技術(shù),只有在項(xiàng)目中實(shí)際用到了,你才會(huì)記憶深刻傅事。
好了缕允,說了這么多,接下來蹭越,就讓我們一起開始SpringBoot的學(xué)習(xí)之旅吧障本。