摘要:我又問微服務(wù)和有什么關(guān)系不用行不行然后對(duì)方就吱吱唔唔了可以打包部署,內(nèi)部集成了。為什么說是自動(dòng)配置的開啟注解是,其實(shí)它就是由下面三個(gè)注解組成的上面三個(gè)注解,前面兩個(gè)都是自帶的,和無關(guān),所以說上面的回答的不是在點(diǎn)上。
最近棧長面試了不少人,其中不乏說對(duì) Spring Boot 非常熟悉的,然后當(dāng)我問到一些 Spring Boot 核心功能和原理的時(shí)候,沒人能說得上來,或者說不到點(diǎn)上,可以說一個(gè)問題就問趴下了!
這是我的問題:
我看你上面寫了熟悉 Spring Boot,那你能講下為什么我們要用 Spring Boot 嗎?
下面我列幾個(gè)最常見的三個(gè)回答:
A:Spring Boot 最主要是不用 XML 配置,可以用 Java 來配置 bean,省去了許多配置文件。
我又問:Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么關(guān)系呢?
然后對(duì)方就吱吱唔唔了……
B:Spring Boot 我們用來做 Spring Cloud 微服務(wù)。
我又問:微服務(wù)和 Spring Boot 有什么關(guān)系?不用 Spring Boot 行不行?
然后對(duì)方就吱吱唔唔了……
C:Spring Boot 可以打 jar 包部署,內(nèi)部集成了Tomcat。
這個(gè)確實(shí)是 Spring Boot 的特色,但是我還是覺得沒有答到關(guān)鍵點(diǎn)上。
然后我繼續(xù)問,如果不考慮打 jar 包部署呢,然后就沒然后了……
為什么我們要用 Spring Boot,顯然上面三個(gè)求職者沒有答到關(guān)鍵點(diǎn)上,Spring Boot 最重要的功能是:自動(dòng)配置。
為什么說是自動(dòng)配置?
Spring Boot 的開啟注解是:@SpringBootApplication,其實(shí)它就是由下面三個(gè)注解組成的:
@Configuration
@ComponentScan
@EnableAutoConfiguration
上面三個(gè)注解,前面兩個(gè)都是 Spring 自帶的,和 Spring Boot 無關(guān),所以說上面的回答的不是在點(diǎn)上。具體請(qǐng)看這篇文章:Spring Boot 最核心的 3 個(gè)注解詳解。
所以說 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)器,我們就能非常簡單的使用它,
先添加 jar 包依賴:
com.alibaba druid-spring-boot-starter 1.1.10
再添加相關(guān)參數(shù):
spring.datasource.url= spring.datasource.username= spring.datasource.password= ……
如果是傳統(tǒng)的項(xiàng)目,我們要自己手動(dòng)寫一大堆的配置,而且還不靈活,有了這個(gè)啟動(dòng)器,我們就可以做到簡單集成。具體大家可以看 druid-spring-boot-starter 是怎么實(shí)現(xiàn)的,也可以參考之前寫的文章:Spring Boot自動(dòng)配置原理、實(shí)戰(zhàn)。
所以,這才是 Spring Boot 的核心,這才是我們?yōu)槭裁词褂?Spring Boot 的原因。如果答不到這個(gè)關(guān)鍵點(diǎn),那真沒有掌握到 Spring Boot 的核心所在。
好了,今天的分享就到這里,關(guān)注Java技術(shù)棧微信公眾號(hào),在后臺(tái)回復(fù):boot,獲取棧長整理的更多的 Spring Boot 教程,都是實(shí)戰(zhàn)干貨,以下僅為部分預(yù)覽。
Spring Boot 讀取配置的幾種方式
Spring Boot 如何做參數(shù)校驗(yàn)?
Spring Boot 最核心的 25 個(gè)注解!
Spring Boot 2.x 啟動(dòng)全過程源碼分析
Spring Boot 2.x 新特性總結(jié)及遷移指南
……
本文原創(chuàng)首發(fā)于微信公眾號(hào):Java技術(shù)棧(id:javastack),關(guān)注公眾號(hào)在后臺(tái)回復(fù) "boot" 可獲取更多 Spring Boot 教程,轉(zhuǎn)載請(qǐng)?jiān)瓨颖A舯拘畔ⅰ?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/74009.html
摘要:從前端到后端到運(yùn)維,經(jīng)歷了幾次前后端架構(gòu)的演變,踩了無數(shù)的坑,度過無數(shù)難免的夜。為了工作或?qū)W習(xí),確實(shí)造過一些輪子,前端的后端的,也開源出來過覺得能提高生產(chǎn)力的。 showImg(https://segmentfault.com/img/bVbgeXP?w=713&h=275); 序: 開源的意義 本系列提前首發(fā)地址 背景 從事了近4年的互聯(lián)網(wǎng)行業(yè),逐漸擔(dān)當(dāng)過團(tuán)隊(duì)的前端到后端的負(fù)責(zé)人,和...
摘要:盡量按照前端后端部署運(yùn)維來講,當(dāng)然中途涉及到跨域這種前后協(xié)調(diào)的還是無法避免捎帶一筆。關(guān)于我目前在寫從零構(gòu)建前后分離項(xiàng)目系列,修正和補(bǔ)充以此為準(zhǔn)不斷更新的項(xiàng)目實(shí)踐地址彩蛋提前預(yù)覽下一章傳送門 序: 開源的意義 本系列提前首發(fā)地址 背景 從事了近4年的互聯(lián)網(wǎng)行業(yè),逐漸擔(dān)當(dāng)過團(tuán)隊(duì)的前端到后端的負(fù)責(zé)人,和大家一樣從小白逐漸的成長起來,回首望去幾年前的博客還是那么稚嫩。 回首這幾年: 從一個(gè)ja...
摘要:你如何理解中的可以理解為啟動(dòng)器,它包含了一系列可以集成到應(yīng)用里面的依賴包,你可以一站式集成及其他技術(shù),而不需要到處找示例代碼和依賴包。如你想使用訪問數(shù)據(jù)庫,只要加入啟動(dòng)器依賴就能使用了。 面試了一些人,簡歷上都說自己熟悉 Spring Boot, 或者說正在學(xué)習(xí) Spring Boot,一問他們時(shí),都只停留在簡單的使用階段,很多東西都不清楚,也讓我對(duì)面試者大失所望。 下面,我給大家總結(jié)...
摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...
摘要:今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 今天整理了一下近大半年以來的一些文章,和我的預(yù)期一樣,很多文章我都忘記自己曾經(jīng)寫過了,這個(gè)記錄的過程讓我也有了新的理解。希望大家,收藏,點(diǎn)贊,加轉(zhuǎn)發(fā)。 面試必備 面試必備:深入Spring MVC DispatchServlet 源碼...
閱讀 1717·2023-04-25 18:19
閱讀 2140·2021-10-26 09:48
閱讀 1207·2021-10-09 09:44
閱讀 1813·2021-09-09 11:35
閱讀 3093·2019-08-30 15:54
閱讀 2130·2019-08-30 11:26
閱讀 2343·2019-08-29 17:06
閱讀 964·2019-08-29 16:38