一個(gè)工作了3年的Java程序員,遇到一個(gè)Spring Boot的問(wèn)題。
他對(duì)這個(gè)問(wèn)題有一些了解,但是回答得不是很好,希望參考我的高手回答。
這個(gè)問(wèn)題是:“如何理解Spring Boot中的Starter”。
對(duì)于這個(gè)問(wèn)題,看看普通人和高手的回答。
普通人:
嗯。。。。。。。。。。。。。
高手:
Starter是Spring Boot的四大核心功能特性之一,除此之外,Spring Boot還有自動(dòng)裝配、Actuator監(jiān)控等特性。
Spring Boot里面的這些特性,都是為了讓開發(fā)者在開發(fā)基于Spring生態(tài)下的企業(yè)級(jí)應(yīng)用時(shí),只需要關(guān)心業(yè)務(wù)邏輯,
減少對(duì)配置和外部環(huán)境的依賴。
其中,Starter是啟動(dòng)依賴,它的主要作用有幾個(gè)。
Starter組件以功能為緯度,來(lái)維護(hù)對(duì)應(yīng)的jar包的版本依賴,
使得開發(fā)者可以不需要去關(guān)心這些版本沖突這種容易出錯(cuò)的細(xì)節(jié)。
Starter組件會(huì)把對(duì)應(yīng)功能的所有jar包依賴全部導(dǎo)入進(jìn)來(lái),避免了開發(fā)者自己去引入依賴帶來(lái)的麻煩。
Starter內(nèi)部集成了自動(dòng)裝配的機(jī)制,也就說(shuō)在程序中依賴對(duì)應(yīng)的starter組件以后,
這個(gè)組件自動(dòng)會(huì)集成到Spring生態(tài)下,并且對(duì)于相關(guān)Bean的管理,也是基于自動(dòng)裝配機(jī)制來(lái)完成。
依賴Starter組件后,這個(gè)組件對(duì)應(yīng)的功能所需要維護(hù)的外部化配置,會(huì)自動(dòng)集成到Spring Boot里面,
我們只需要在application.properties文件里面進(jìn)行維護(hù)就行了,比如Redis這個(gè)starter,只需要在application.properties
文件里面添加redis的連接信息就可以直接使用了。
在我看來(lái),Starter組件幾乎完美的體現(xiàn)了Spring Boot里面約定優(yōu)于配置的理念。
另外,Spring Boot官方提供了很多的Starter組件,比如Redis、JPA、MongoDB等等。
但是官方并不一定維護(hù)了所有中間件的Starter,所以對(duì)于不存在的Starter,第三方組件一般會(huì)自己去維護(hù)一個(gè)。
官方的starter和第三方的starter組件,最大的區(qū)別在于命名上。
官方維護(hù)的starter的以spring-boot-starter開頭的前綴。
第三方維護(hù)的starter是以spring-boot-starter結(jié)尾的后綴
這也是一種約定優(yōu)于配置的體現(xiàn)。
以上就是我對(duì)這個(gè)問(wèn)題的理解。
總結(jié)
在技術(shù)的學(xué)習(xí)過(guò)程中,我認(rèn)為“為什么是” 比 “是什么”要重要。
以這種方式來(lái)學(xué)習(xí),帶來(lái)的好處就是對(duì)技術(shù)理解會(huì)更加深刻。
這道題考察的就是“為什么是”,不難,關(guān)鍵在于自己的理解。
如果你喜歡這篇文章,記得點(diǎn)贊和收藏。
如果想獲得一對(duì)一的面試指導(dǎo)以及面試資料,可以私信我。