前言
今天跟大家分享下SpringBoot 常見高頻面試題的知識,
下面是小編關于SpringBoot的知識點總結了一個思維導圖,希望對大家所有幫助!
話不多說,下面我們開始正題:
1. 什么是SpringBoot?
通過Spring Boot,可以輕松地創建獨立的,基于生產級別的Spring的應用程式,您可以“運行”它們,大多數Spring Boot應用程式需要最少的Spring配置,
2. SpringBoot的特征?
-
創建獨立的Spring應用程式
-
直接嵌入Tomcat,Jetty或Undertow(無需部署WAR檔案)
-
提供固化的“starter”依賴項,以簡化構建配置
-
盡可能自動配置Spring和3rd Party庫
-
提供可用于生產的功能,例如指標,運行狀況檢查和外部化配置
-
完全沒有代碼生成,也不需要XML配置
3. 如何快速構建一個SpringBoot專案?
-
通過Web界面使用,http://start.spring.io
-
通過Spring Tool Suite使用,
-
通過IntelliJ IDEA使用,
-
使用Spring Boot CLI使用,
4. SpringBoot啟動類注解?它是由哪些注解組成?
@SpringBootApplication
-
@SpringBootConfifiguration:組合了 @Confifiguration 注解,實作組態檔的功能,
-
@EnableAutoConfifiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,
-
@SpringBootApplication(exclude = { DataSourceAutoConfifiguration.class })
-
@ComponentScan:Spring組件掃描
5. 什么是yaml?
YAML(/?j?m?l/,尾音類似camel駱駝)是一個可讀性高,用來表達資料序列化的格式,YAML參考了其他多種語言,包括:C語言、Python、Perl,更具有結構性,
6. SpringBoot支持組態檔的格式?
1.properties
java.xiaokaxiu.name = xiaoka
2.yml
java: xiaokaxiu: name: xiaoka
7. SpringBoot啟動方式?
1. main方法
2. 命令列 java -jar 的方式
3. mvn/gradle
8. SpringBoot需要獨立的容器運行?
不需要,內置了 Tomcat/Jetty,
9. SpringBoot配置途徑?
1. 命令列引數
2. java:comp/env里的JNDI屬性
3. JVM系統屬性
4. 作業系統環境變數
5. 隨機生成的帶random.*前綴的屬性(在設定其他屬性時,可以參考它們,比如${random.
long})
6. 應用程式以外的application.properties或者appliaction.yml檔案
7. 打包在應用程式內的application.properties或者appliaction.yml檔案
8. 通過@PropertySource標注的屬性源
9. 默認屬性
tips:這個串列按照優先級排序,也就是說,任何在高優先級屬性源里設定的屬性都會覆寫低優先級的相
同屬性,
10. application.properties和application.yml檔案可放位置?優先級?
1. 外置,在相對于應用程式運行目錄的/confifig子目錄里,
2. 外置,在應用程式運行的目錄里,
3. 內置,在confifig包內,
4. 內置,在Classpath根目錄,
這個串列按照優先級排序,優先級高的會覆寫優先級低的,
當然我們可以自己指定檔案的位置來加載組態檔,
java -jar xiaoka.jar ———spring.config.location=/home/application.yml
11. SpringBoot自動配置原理?
@EnableAutoConfifiguration (開啟自動配置) 該注解引入了AutoConfifigurationImportSelector,該類中
的方法會掃描所有存在META-INF/spring.factories的jar包,
12. SpringBoot熱部署方式?
-
spring-boot-devtools
-
Spring Loaded
-
Jrebel
-
模版熱部署
13.「bootstrap.yml」 和「application.yml」?
bootstrap.yml 優先于application.yml
14. SpringBoot如何修改埠號?
yml中:
server : port : 8888
properties:
server.port = 8888
命令1:
java -jar xiaoka.jar ——— server.port=8888
命令2:
java - Dserver.port=8888 -jar xiaoka.jar
15. 開啟SpringBoot特性的幾種方式?
1. 繼承spring-boot-starter-parent專案
2. 匯入spring-boot-dependencies專案依賴
16. SpringBoot如何兼容Spring專案?
在啟動類加:
@ImportResource(locations = {"classpath:spring.xml"})
17. SpringBoot配置監控?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
18. 獲得Bean裝配報告資訊訪問哪個端點?
/beans 端點
19. 關閉應用程式訪問哪個端點?
/shutdown
該端點默認是關閉的,如果開啟,需要如下設定,
endpoints: shutdown: enabled: true
或者properties格式也是可以的,
20. 查看發布應用資訊訪問哪個端點?
/info
21. 針對請求訪問的幾個組合注解?
@PatchMapping
@PostMapping
@GetMapping
@PutMapping
@DeleteMapping
22. SpringBoot 中的starter?
可以理解成對依賴的一種合成,starter會把一個或一套功能相關依賴都包含進來,避免了自己去依賴費
事,還有各種包的沖突問題,大大的提升了開發效率,
并且相關配置會有一個默認值,如果我們自己去配置,就會覆寫默認值,
23. SpringBoot集成Mybatis?
mybatis-spring-boot-starter
24. 什么是SpringProfifiles?
一般來說我們從開發到生產,經過開發(dev)、測驗(test)、上線(prod),不同的時刻我們會用不同的配置,Spring Profifiles 允許用戶根據組態檔(dev,test,prod 等)來注冊 bean,它們可以讓我們自己選擇什么時候用什么配置,
25. 不同的環境的組態檔?
可以是 application-{profifile}.properties/yml ,但默認是啟動主組態檔application.properties,一般
來說我們的不同環境配置如下,
-
`application.properties`:主組態檔
-
`application-dev.properties`:開發環境組態檔
-
`application-test.properties`:測驗環境組態檔
-
`application.prop-properties`:生產環境組態檔
26. 如何激活某個環境的配置?
比如我們激活開發環境,
yml:
spring: profiles: active: dev
properties:
spring.profiles.active=dev
命令列:
java -jar xiaoka-v1.0.jar ———spring.profiles.active=dev
27. 撰寫測驗用例的注解?
@SpringBootTest
28. SpringBoot例外處理相關注解?
@ControllerAdvice
@ExceptionHandler
29. SpringBoot 1.x 和 2.x區別?·······
1. SpringBoot 2基于Spring5和JDK8,Spring 1x用的是低版本,
2. 配置變更,引數名等,
3. SpringBoot2相關的插件最低版本很多都比原來高
4. 2.x配置中的中文可以直接讀取,不用轉碼
5. Actuator的變化
6. CacheManager 的變化
30. SpringBoot讀取配置相關注解有?
-
@PropertySource
-
@Value
-
@Environment
-
@ConfifigurationProperties
最后
關注公眾號:程式員白楠楠,領取2020最新Java面試題手冊(200多頁PDF檔案),
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/231294.html
標籤:Java
上一篇:手寫mini版MVC框架
