Spring Boot 面試不被干趴下

隨著Spring Boot的面世已經(jīng)有幾年了,給程序員帶來(lái)的最直觀的感受是配置減少了。至于Spring Boot的核心功能和原理,很少人能答上來(lái)。為了在互聯(lián)網(wǎng)寒冬中能找到工作。今天根據(jù)所學(xué)發(fā)表下關(guān)于spring Boot的愚見,下面以考官和面試者的場(chǎng)景展開。
這是面試官的問(wèn)題:
我看你上面寫了熟悉 Spring Boot,那你能講下為什么我們要用 Spring Boot 嗎?
下面我列幾個(gè)最常見的三個(gè)回答:
A:Spring Boot 最主要是不用 XML 配置,可以用 Java 來(lái)配置 bean,省去了許多配置文件。
面試官又問(wèn):Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么關(guān)系呢?
然后對(duì)方就吱吱唔唔了……
B:Spring Boot 我們用來(lái)做 Spring Cloud 微服務(wù)。
面試官又問(wèn):微服務(wù)和 Spring Boot 有什么關(guān)系?不用 Spring Boot 行不行?
然后對(duì)方就吱吱唔唔了……
C:Spring Boot 可以打 jar 包部署,內(nèi)部集成了Tomcat。
這個(gè)確實(shí)是 Spring Boot 的特色,但是我還是覺得沒有答到關(guān)鍵點(diǎn)上。
然后我繼續(xù)問(wèn),如果不考慮打 jar 包部署呢,然后就沒然后了……
為什么我們要用 Spring Boot,顯然上面三個(gè)求職者沒有答到關(guān)鍵點(diǎn)上,Spring Boot 最重要的功能是:自動(dòng)配置。
為什么說(shuō)是自動(dòng)配置?
Spring Boot 的開啟注解是:@SpringBootApplication,其實(shí)它就是由下面三個(gè)注解組成的:
@Configuration
@ComponentScan
@EnableAutoConfiguration
上面三個(gè)注解,前面兩個(gè)都是 Spring 自帶的,和 Spring Boot 無(wú)關(guān),所以說(shuō)上面的回答的不是在點(diǎn)上。
所以說(shuō) Spring Boot 最最核心的就是這個(gè) @EnableAutoConfiguration 注解了,它能根據(jù)類路徑下的 jar 包和配置動(dòng)態(tài)加載配置和注入bean。
舉個(gè)例子,比如我在 lib 下放一個(gè) druid 連接池的 jar 包,然后在 application.yml 文件配置 druid 相關(guān)的參數(shù),Spring Boot 就能夠自動(dòng)配置所有我們需要的東西,如果我把 jar 包拿掉或者把參數(shù)去掉,那 Spring Boot 就不會(huì)自動(dòng)配置。
這樣我們就能把許多功能做成公共的自動(dòng)配置的啟動(dòng)器(starters),其實(shí) druid 連接池就是這么做的,它提供了針對(duì) Spring Boot 的啟動(dòng)器:druid-spring-boot-starter。
有了這個(gè)自動(dòng)配置的啟動(dòng)器,我們就能非常簡(jiǎn)單的使用它,
先添加 jar 包依賴:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>
再添加相關(guān)參數(shù):
spring.datasource.url= spring.datasource.username= spring.datasource.password= ……
如果是傳統(tǒng)的項(xiàng)目,我們要自己手動(dòng)寫一大堆的配置,而且還不靈活,有了這個(gè)啟動(dòng)器,我們就可以做到簡(jiǎn)單集成。具體大家可以看 druid-spring-boot-starter 是怎么實(shí)現(xiàn)的。
所以,這才是 Spring Boot 的核心,這才是我們?yōu)槭裁词褂?Spring Boot 的原因。如果答不到這個(gè)關(guān)鍵點(diǎn),那真沒有掌握到 Spring Boot 的核心所在。
總結(jié)
以上所述是小編給大家介紹的Spring Boot 面試,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
- 這篇文章主要介紹了程序員面試的幾個(gè)小技巧,在平時(shí)面試的時(shí)候,除了實(shí)打?qū)嵉募寄苓€需要更多的技巧,雙管齊下才能贏得更大的勝算,技能方面就不多說(shuō)了,下面來(lái)分享幾個(gè)面試2023-04-23
- 面試中,問(wèn)鎖主要是兩方面:鎖的日常使用場(chǎng)景 + 鎖原理,鎖的日常使用場(chǎng)景主要考察對(duì)鎖 API 的使用熟練度,看看你是否真的使用過(guò)這些 API,而不是紙上談兵,鎖原理主要就是2022-05-19
- 這篇文章主要介紹了Mybatis常見面試題詳細(xì)總結(jié),通過(guò)總結(jié)列舉大量的mybatis面試常見題目供給大家參考,希望對(duì)大家有所幫助2021-08-24
2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招)
這篇文章主要介紹了2020Java后端開發(fā)面試題總結(jié)(春招+秋招+社招),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-02-18MySQL數(shù)據(jù)庫(kù)選擇題小結(jié)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)選擇題小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-02-07- 這篇文章主要介紹了30道有趣的JVM面試題(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-11-26
- 這篇文章主要介紹了Python面試題爬蟲篇小結(jié)(附答案),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-10-28
- 這篇文章主要介紹了還不理解B樹和B+樹,那就看看這篇文章吧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一2020-09-10
Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招)
這篇文章主要介紹了Java面試通關(guān)要點(diǎn)匯總(備戰(zhàn)秋招),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-09-08- 這篇文章主要介紹了10道JVM常見面試題解析(附答案),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)2020-09-04