普通人的角度茸苇,人類角度排苍,學(xué)習(xí)Spring Boot,然后去開始想学密,先寫hello world淘衙,再看看官網(wǎng),再網(wǎng)上搜索一些博客腻暮,系列性的彤守,系統(tǒng)跟著敲一遍,找找視頻課程哭靖,跟著做個(gè)小型的demo級的小項(xiàng)目 -> spring boot具垫。
1、不用Spring Boot的痛苦是什么试幽?
(1)各種技術(shù)整合在一起筝蚕,版本混亂,大量依賴自己去找铺坞,依賴沖突
(2)基于xml格式的配置文件起宽,對各種技術(shù)框架進(jìn)行大量的繁瑣配置,mvc-servlet.xml济榨,applicationContext.xml坯沪,mybatis-config.xml,web.xml
(3)web系統(tǒng)跑起來測一下腿短,需要與tomcat等web容器整合起來才能測試
(4)單元測試的時(shí)候需要自己去選擇和導(dǎo)入需要的各種測試組件的依賴屏箍,junit绘梦,hamcrest,mockito赴魁,很多組件
(5)部署打包的時(shí)候需要自己去配置打包插件
(6)部署應(yīng)用上線之后卸奉,沒法去對線上的應(yīng)用,包括jvm堆棧等方方面面進(jìn)行監(jiān)控颖御,沒有方便的辦法去看到這些東西
傳統(tǒng)的以spring為核心的web系統(tǒng)開發(fā)榄棵,從啟動(dòng)項(xiàng)目、開發(fā)潘拱、測試疹鳄、部署以及監(jiān)控,都很麻煩芦岂,有大量需要手工做的事情
2瘪弓、用了Spring Boot以后的好處是什么?
spring社區(qū)意識到了這些問題禽最,開發(fā)人員一定是最討厭繁瑣的腺怯,希望的都是用技術(shù)提高工作效率。因此推出了spring boot框架川无,作為開發(fā)spring項(xiàng)目的一個(gè)腳手架呛占,腳手架,類似于一個(gè)封裝在各種技術(shù)之上的一個(gè)基礎(chǔ)框架懦趋,基礎(chǔ)模板晾虑。腳手架幫助我們快速整合需要使用的技術(shù)框架,快速開發(fā)仅叫、測試以及部署和監(jiān)控帜篇,節(jié)約我們的成本。如果沒有spring boot惑芭,很多公司坠狡,特別是一些大公司碧注,會將spring mvc 贪婉、mybatis、spring這些框架再度根據(jù)自己公司的開發(fā)經(jīng)驗(yàn)济炎、規(guī)范和實(shí)際情況幻锁,再度封裝凯亮,進(jìn)一步簡化每個(gè)新項(xiàng)目使用框架的一個(gè)成本。
Spring Boot是spring官方社區(qū)推出的哄尔,設(shè)計(jì)思想假消,架構(gòu)思想,是更好的岭接,更加優(yōu)雅的
(1)spring boot負(fù)責(zé)統(tǒng)一各個(gè)依賴的版本富拗,保證各種技術(shù)的版本之間兼容臼予,自動(dòng)引入需要的各種依賴。spring boot 1.5.9啃沪,在這個(gè)版本基礎(chǔ)之上粘拾,你引入的spring、mybatis创千、spring mvc缰雇、redis、zookeeper追驴、kafka械哟、mongodb,等等各種技術(shù)殿雪,在spring boot1.5.9這個(gè)大版本的基礎(chǔ)之上暇咆,其實(shí)所有技術(shù)的版本都是互相兼容的,省去了我們自己去尋找版本整合冠摄,解決不兼容問題的一個(gè)過程
(2)所有技術(shù)整合進(jìn)來之后糯崎,不需要xml配置,spring boot全部是大量基于按照約定的自動(dòng)配置河泳,自動(dòng)生成那些技術(shù)相關(guān)的一些bean,注入spring容器供使用年栓,基于注解進(jìn)行少量注釋拆挥,基于application.properties,少量的配置即可
(3)spring boot支持內(nèi)嵌的web容器某抓,上來直接啟動(dòng)一個(gè)main方法就可以啟動(dòng)一個(gè)內(nèi)嵌的tomcat web容器+web程序纸兔,快速上手測試,http://localhost:8080/
(4)一鍵引入需要的所有單元測試組件依賴否副,所有測試組件的版本兼容汉矿,支持controller、service备禀、dao各種測試
(5)默認(rèn)聲明一個(gè)插件洲拇,自己給你把插件配置好了,支持打包成可以執(zhí)行的jar包或者是war包
(6)系統(tǒng)上線之后曲尸,默認(rèn)支持大量的線上應(yīng)用的監(jiān)控metrics赋续,可以看到線上應(yīng)用的jvm堆棧,等等信息
3另患、對于Spring Boot這種框架型技術(shù)該如何學(xué)習(xí)纽乱?
(1)spring core,那么多復(fù)雜的功能昆箕,你都學(xué)習(xí)了嗎鸦列?spring mvc那么多復(fù)雜的功能租冠,你都學(xué)習(xí)了嗎?否薯嗤,20%顽爹。
(2)你在工作中都會用到spring core和spring mvc,這些框架100%的功能应民,你都使用了嗎话原?否,20%诲锹。
(3)在面試的時(shí)候繁仁,有面試官會揪著spring core和spring mvc的各種生僻冷門的功能、api/方法的細(xì)節(jié)归园,問你這個(gè)功能怎么回事黄虱,那個(gè)功能怎么回事嗎?否庸诱,我面試從來不問任何一丁點(diǎn)的框架功能性的東西捻浦。
(4)技術(shù)分成五種:框架性的技術(shù),中間件的技術(shù)桥爽,架構(gòu)朱灿,項(xiàng)目經(jīng)驗(yàn),底層技術(shù)钠四〉涟牵框架型的技術(shù),28法則缀去,20%的核心功能侣灶,就足夠項(xiàng)目中的使用了。學(xué)了剩下80%的功能缕碎,幾乎很少用到褥影,而且功能性的東西,學(xué)習(xí)咏雌,幾乎是零成本凡怎,你只要掌握了20%的功能,就已經(jīng)學(xué)會了這個(gè)技術(shù)的基礎(chǔ)了处嫌,如果你后面項(xiàng)目里需要80%的冷門功能栅贴,百度,官網(wǎng)熏迹,只要是個(gè)大腦正常的工程師檐薯,自己都可以搞定。