Spring Boot 面试,一个问题就干趴下了!
最近棧長面試了不少人,其中不乏說對 Spring Boot 非常熟悉的,然后當(dāng)我問到一些 Spring Boot 核心功能和原理的時候,沒人能說得上來,或者說不到點上,可以說一個問題就問趴下了!
這是我的問題:
我看你上面寫了熟悉 Spring Boot,那你能講下為什么我們要用 Spring Boot 嗎?
下面我列幾個最常見的三個回答:
A:Spring Boot 最主要是不用 XML 配置,可以用 Java 來配置 bean,省去了許多配置文件。
我又問:Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么關(guān)系呢?
然后對方就吱吱唔唔了……
B:Spring Boot 我們用來做 Spring Cloud 微服務(wù)。
我又問:微服務(wù)和 Spring Boot 有什么關(guān)系?不用 Spring Boot 行不行?
然后對方就吱吱唔唔了……
C:Spring Boot 可以打 jar 包部署,內(nèi)部集成了Tomcat。
這個確實是 Spring Boot 的特色,但是我還是覺得沒有答到關(guān)鍵點上。
然后我繼續(xù)問,如果不考慮打 jar 包部署呢,然后就沒然后了……
為什么我們要用 Spring Boot,顯然上面三個求職者沒有答到關(guān)鍵點上,Spring Boot 最重要的功能是:自動配置。
為什么說是自動配置?
Spring Boot 的開啟注解是:@SpringBootApplication,其實它就是由下面三個注解組成的:
- @Configuration
- @ComponentScan
- @EnableAutoConfiguration
上面三個注解,前面兩個都是 Spring 自帶的,和 Spring Boot 無關(guān),所以說上面的回答的不是在點上。具體請看這篇文章:Spring Boot 最核心的 3 個注解詳解。
所以說 Spring Boot 最最核心的就是這個 @EnableAutoConfiguration 注解了,它能根據(jù)類路徑下的 jar 包和配置動態(tài)加載配置和注入bean。
舉個例子,比如我在 lib 下放一個 druid 連接池的 jar 包,然后在 application.yml 文件配置 druid 相關(guān)的參數(shù),Spring Boot 就能夠自動配置所有我們需要的東西,如果我把 jar 包拿掉或者把參數(shù)去掉,那 Spring Boot 就不會自動配置。
這樣我們就能把許多功能做成公共的自動配置的啟動器(starters),其實 druid 連接池就是這么做的,它提供了針對 Spring Boot 的啟動器:druid-spring-boot-starter。
有了這個自動配置的啟動器,我們就能非常簡單的使用它,
先添加 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)的項目,我們要自己手動寫一大堆的配置,而且還不靈活,有了這個啟動器,我們就可以做到簡單集成。具體大家可以看 druid-spring-boot-starter 是怎么實現(xiàn)的,也可以參考之前寫的文章:Spring Boot自動配置原理、實戰(zhàn)。
所以,這才是 Spring Boot 的核心,這才是我們?yōu)槭裁词褂?Spring Boot 的原因。如果答不到這個關(guān)鍵點,那真沒有掌握到 Spring Boot 的核心所在。
好了,今天的分享就到這里,關(guān)注Java技術(shù)棧微信公眾號,在后臺回復(fù):boot,獲取棧長整理的更多的 Spring Boot 教程,都是實戰(zhàn)干貨,以下僅為部分預(yù)覽。
- Spring Boot 讀取配置的幾種方式
- Spring Boot 如何做參數(shù)校驗?
- Spring Boot 最核心的 25 個注解!
- Spring Boot 2.x 啟動全過程源碼分析
- Spring Boot 2.x 新特性總結(jié)及遷移指南
- ……
本文原創(chuàng)首發(fā)于微信公眾號:Java技術(shù)棧(id:javastack),關(guān)注公眾號在后臺回復(fù) "boot" 可獲取更多 Spring Boot 教程,轉(zhuǎn)載請原樣保留本信息。
轉(zhuǎn)載于:https://www.cnblogs.com/javastack/p/10635333.html
總結(jié)
以上是生活随笔為你收集整理的Spring Boot 面试,一个问题就干趴下了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux进程篇 (二) 进程的基本控制
- 下一篇: SpringBoot集成Redis实现排