【每日3分鐘技術乾貨 | 面試題+答案 | SpringBoot篇(一)】

一、什麼是 Spring Boot?
Spring Boot 是 Spring 開源組織下的子項目,是 Spring 組件一站式處理方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各類啓動器,開發者能快速上手。html

二、爲何要用 Spring Boot?
Spring Boot 優勢很是多,如:程序員

獨立運行web

簡化配置面試

自動配置redis

無代碼生成和XML配置spring

應用監控sql

上手容易.....數據庫

Spring Boot 集這麼多優勢於一身,還有理由不使用它呢?編程

三、Spring Boot 的核心配置文件有哪幾個?它們的區別是什麼?
Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。bootstrap

application 配置文件這個容易瞭解,主要用於 Spring Boot 項目的自動化配置。

bootstrap 配置文件有如下幾個應用場景。

使用 Spring Cloud Config 配置中心時,這時須要在 bootstrap 配置文件中增長鏈接到配置中心的配置屬性來加載外部配置中心的配置信息;

少許固定的不能被覆蓋的屬性;

少許加密/解密的場景;

四、Spring Boot 的配置文件有哪幾種格式?它們有什麼區別?
.properties 和 .yml,它們的區別主要是書寫格式不一樣。

1).properties

2).yml

另外,.yml 格式不支持@PropertySource註解導入配置。

五、Spring Boot 的核心註解是哪一個?它主要由哪幾個註解組成的?
啓動類上面的註解是@SpringBootApplication,它也是 Spring Boot 的核心註解,主要組合包含了如下 3 個註解:

@SpringBootConfiguration:組合了 @Configuration 註解,實現配置文件的功能。

@EnableAutoConfiguration:打開自動配置的功能,也能夠關閉某個自動配置的選項,如關閉數據源自動配置功能:@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring組件掃描。

六、開啓 Spring Boot 特性有哪幾種方式?
1)繼承spring-boot-starter-parent項目

2)導入spring-boot-dependencies項目依賴

七、Spring Boot 須要獨立的容器運行嗎?
能夠不須要,內置了 Tomcat/ Jetty 等容器。

八、運行 Spring Boot 有哪幾種方式?
1)打包用命令或者者放到容器中運行

2)用 Maven/ Gradle 插件運行

3)直接執行 main 方法運行

9.springboot經常使用的starter有哪些?
spring-boot-starter-web 嵌入tomcat和web開發須要servlet與jsp支持
spring-boot-starter-data-jpa 數據庫支持
spring-boot-starter-data-redis redis數據庫支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter

十、Spring Boot 自動配置原理是什麼?
註解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自動配置的核心,首先它得是一個配置文件,其次根據類路徑下可否有這個類去自動配置。

十一、Spring Boot 的目錄結構是怎麼的?

這個目錄結構是主流及推薦的作法,而在主入口類上加上 @SpringBootApplication 註解來開啓 Spring Boot 的各項能力,如自動配置、組件掃描等。

十二、你如何瞭解 Spring Boot 中的 Starters?
Starters能夠了解爲啓動器,它包含了一系列能夠集成到應用裏面的依賴包,你能夠一站式集成 Spring 及其他技術,而不須要四處找示例代碼和依賴包。如你想使用 Spring JPA 訪問數據庫,只需加入 spring-boot-starter-data-jpa 啓動器依賴就能使用了。

Starters包含了許多項目中須要用到的依賴,它們能快速持續的運行,都是一系列獲得支持的管理傳遞性依賴。

1三、如何在 Spring Boot 啓動的時候運行少許特定的代碼?
能夠實現接口 ApplicationRunner 或者者 CommandLineRunner,這兩個接口實現方式同樣,它們都只提供了一個 run 方法,

1四、Spring Boot 有哪幾種讀取配置的方式?
Spring Boot 能夠經過 @PropertySource,@Value,@Environment, @ConfigurationProperties 來綁定變量,

1五、Spring Boot 支持哪些日誌框架?推薦和默認的日誌框架是哪一個?
Spring Boot 支持 Java Util Logging, Log4j2, Lockback 做爲日誌框架,假如你使用 Starters 啓動器,Spring Boot 將使用 Logback 做爲默認日誌框架,

1六、SpringBoot 實現熱部署有哪幾種方式?
主要有兩種方式:

Spring Loaded

Spring-boot-devtools

Spring-boot-devtools?

1七、你如何瞭解 Spring Boot 配置加載順序?
在 Spring Boot 裏面,可使用如下幾種方式來加載配置。

1)properties文件;

2)YAML文件;

3)系統環境變量;

4)命令行參數;

等等……

1八、Spring Boot 如何定義多套不一樣環境配置?
提供多套配置文件,如:

運行時指定具體的配置文件

1九、Spring Boot 能夠兼容老 Spring 項目嗎,如何作?
能夠兼容,使用@ImportResource註解導入老 Spring 項目配置文件。

20、保護 Spring Boot 應用有哪些方法?
在生產中使用HTTPS

使用Snyk檢查你的依賴關係

更新到最新版本

啓用CSRF保護

使用內容安全策略防止XSS攻擊...

2一、Spring Boot 2.X 有什麼新特性?與 1.X 有什麼區別?
配置變動

JDK 版本更新

第三方類庫更新

響應式 Spring 編程支持

HTTP/2 支持

配置屬性綁定

更多改進與加強…

22.什麼是Spring Profiles?
Spring Profiles容許用戶根據配置文件(dev,test,prod等)來註冊bean。所以,當應用程序在開發中運行時,
只有某些bean能夠加載,而在PRODUCTION中,某些其餘bean能夠加載。假設咱們的要求是Swagger文檔僅適用於QA環境,
而且禁用全部其餘文檔。這可使用配置文件來完成。Spring Boot使得使用配置文件很是簡單。
23.什麼是Spring Batch?
Spring Boot Batch提供可重用的函數,這些函數在處理大量記錄時很是重要,包括日誌/跟蹤,事務管理,做業處理統計信息,
做業從新啓動,跳過和資源管理。它還提供了更先進的技術服務和功能,經過優化和分區技術,能夠實現極高批量和高性能批處理做業。
簡單以及複雜的大批量批處理做業能夠高度可擴展的方式利用框架處理重要大量的信息。
24.什麼是FreeMarker模板?
FreeMarker是一個基於Java的模板引擎,最初專一於使用MVC軟件架構進行動態網頁生成。使用Freemarker的主要優勢是表示層和業務層的徹底分離。
程序員能夠處理應用程序代碼,而設計人員能夠處理html頁面設計。最後使用freemarker能夠將這些結合起來,給出最終的輸出頁面。
25.什麼是JavaConfig?
Spring JavaConfig是Spring社區的產品,它提供了配置Spring IoC容器的純Java方法。所以它有助於避免使用XML配置。使用JavaConfig的優勢在於:
面向對象的配置。因爲配置被定義爲JavaConfig中的類,所以用戶能夠充分利用Java中的面向對象功能。一個配置類能夠繼承另外一個,重寫它的@Bean方法等。
減小或消除XML配置。基於依賴注入原則的外化配置的好處已被證實。可是,許多開發人員不但願在XML和Java之間來回切換。
JavaConfig爲開發人員提供了一種純Java方法來配置與XML配置概念類似的Spring容器。
從技術角度來說,只使用JavaConfig配置類來配置容器是可行的,但實際上不少人認爲將JavaConfig與XML混合匹配是理想的。
類型安全和重構友好。JavaConfig提供了一種類型安全的方法來配置Spring容器。因爲Java 5.0對泛型的支持,如今能夠按類型而不是按名稱檢索bean,不須要任何強制轉換或基於字符串的查找
26.啓動類註解:
@SpringBootConfiguration:Spring Boot的配置類; 標註在某個類上,表示這是一個Spring Boot的配置類; @Configuration:配置類上來標註這個註解;
配置類 ----- 配置文件;配置類也是容器中的一個組件;@Component
@EnableAutoConfiguration:開啓自動配置功能;
之前咱們須要配置的東西,Spring Boot幫咱們自動配置;@EnableAutoConfiguration告訴SpringBoot開啓自
動配置功能;這樣自動配置才能生效;
Spring Boot在啓動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值做爲自動配置類導入到容器中,自動配置類就失效,幫咱們進行自動配置工做
27.配置文件的加載順序?
由jar包外向jar包內進行尋找;
優先加載帶profile
6.jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
7.jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
再來加載不帶profile
8.jar包外部的application.properties或application.yml(不帶spring.profile)配置文件?
9.jar包內部的application.properties或application.yml(不帶spring.profile)配置文件

28.自動配置原理?
1)、SpringBoot啓動的時候加載主配置類,開啓了自動配置功能 @EnableAutoConfiguration
2)、@EnableAutoConfiguration 做用:
將 類路徑下 META-INF/spring.factories 裏面配置的全部EnableAutoConfiguration的值加入到了容器中;
每個這樣的 xxxAutoConfiguration類都是容器中的一個組件,都加入到容器中;用他們來作自動配置;
3)、每個自動配置類進行自動配置功能;
根據當前不一樣的條件判斷,決定這個配置類是否生效?
一但這個配置類生效;這個配置類就會給容器中添加各類組件;這些組件的屬性是從對應的properties類中獲取 的,這些類裏面的每個屬性又是和配置文件綁定的;
5)、全部在配置文件中能配置的屬性都是在xxxxProperties類中封裝者‘;配置文件能配置什麼就能夠參照某個功 能對應的這個屬性類
怎麼用好自動配置,精髓:
1)、SpringBoot啓動會加載大量的自動配置類
2)、咱們看咱們須要的功能有沒有SpringBoot默認寫好的自動配置類;
3)、咱們再來看這個自動配置類中到底配置了哪些組件;(只要咱們要用的組件有,咱們就不須要再來配置了)
4)、給容器中自動配置類添加組件的時候,會從properties類中獲取某些屬性。咱們就能夠在配置文件中指定這 些屬性的值;

結語

就以這段話自勉、共勉吧。越努力、越幸運,若是你不是官二代、富二代、紅二代,那麼請記住:勤奮纔是改變你命運的惟一捷徑。

歡迎在留言區留下你的觀點,一塊兒討論提升。若是今天的文章讓你有新的啓發,學習能力的提高上有新的認識,歡迎轉發分享給更多人。

歡迎各位讀者加入程序員知識碼頭技術羣,在公衆號後臺回覆「加羣」便可。

猜你還想看

1.面試總問的jvm調優究竟是要幹什麼?

2.程序員應該有什麼樣的職業規劃?值得思考一下!

3.每日3分鐘技術乾貨 | 面試題+答案 | jvm篇(一)

4.每日3分鐘技術乾貨 | 面試題+答案 | jvm篇(二)

5.每日3分鐘技術乾貨 | 面試題+答案 | Redis篇(一)

6.每日3分鐘技術乾貨 | 面試題+答案 | Mysql篇(一)

7.每日3分鐘技術乾貨 | 面試題+答案 | RabbitMQ篇(一)

8.每日3分鐘技術乾貨 | 面試題+答案 | Zookeeper篇(一)

9.每日3分鐘技術乾貨 | 面試題+答案 | Spring&SpringMVC篇(一)

掃描下方「二維碼」,選擇「關注公衆號」

天天技術文章第一時間送達!

關注「程序員知識碼頭」,收看更多精彩內容複製代碼
相關文章
相關標籤/搜索