從最開始的,SSH到SpringMVC,隨着Spring的發展,使得開發越來越容易了,SpringBoot已經成爲Java程序員必會的一項,以下給小夥伴整理了30道相關面試題,也可以作爲知識點,學習收藏起來。
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
- @SpringBootConfiguration:組合了 @Configuration 註解,實現配置文件的功能。
- @EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項。
- @SpringBootApplication(exclude = { DataSourceAutoConfiguration.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啓動方式?
-
main方法
-
命令行 java -jar 的方式
-
mvn/gradle
8.SpringBoot需要獨立的容器運行?
不需要,內置了 Tomcat/Jetty。
9.SpringBoot配置途徑?
- 命令行參數
- java:comp/env裏的JNDI屬性
- JVM系統屬性
- 操作系統環境變量
- 隨機生成的帶random.*前綴的屬性(在設置其他屬性時,可以引用它們,比如${random. long})
- 應用程序以外的application.properties或者appliaction.yml文件
- 打包在應用程序內的application.properties或者appliaction.yml文件
- 通過@PropertySource標註的屬性源
- 默認屬性
tips:這個列表按照優先級排序,也就是說,任何在高優先級屬性源裏設置的屬性都會覆蓋低優先級的相同屬性。
10.application.properties和application.yml文件可放位置?優先級?
-
外置,在相對於應用程序運行目錄的/config子目錄裏。
-
外置,在應用程序運行的目錄裏。
-
內置,在config包內。
-
內置,在Classpath根目錄。
這個列表按照優先級排序,優先級高的會覆蓋優先級低的。
當然我們可以自己指定文件的位置來加載配置文件。
java -jar xiaoka.jar ———spring.config.location=/home/application.yml
11.SpringBoot自動配置原理?
@EnableAutoConfiguration (開啓自動配置)
該註解引入了AutoConfigurationImportSelector,該類中的方法會掃描所有存在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特性的幾種方式?
- 繼承spring-boot-starter-parent項目
- 導入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.什麼是SpringProfiles?
一般來說我們從開發到生產,經過開發(dev)、測試(test)、上線(prod)。不同的時刻我們會用不同的配置。Spring Profiles 允許用戶根據配置文件(dev,test,prod 等)來註冊 bean。它們可以讓我們自己選擇什麼時候用什麼配置。
25.不同的環境的配置文件?
可以是 application-{profile}.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區別?·······
- SpringBoot 2基於Spring5和JDK8,Spring 1x用的是低版本。
- 配置變更,參數名等。
- SpringBoot2相關的插件最低版本很多都比原來高
- 2.x配置中的中文可以直接讀取,不用轉碼
- Actuator的變化
- CacheManager 的變化
30.SpringBoot讀取配置相關注解有?
- @PropertySource
- @Value
- @Environment
- @ConfigurationProperties
參考:
-
《SpringBoot實戰(第4版)》
-
《Spring Boot編程思想》
-
《深入淺出Spring Boot 2.x》
-
https://spring.io/projects/spring-boot
-
百度百科
新人博主求3連🙏🙏🙏。
文章持續更新中,⛽️。另外 博主整理 + 原創 15萬字面試題,包括17個專題。歡迎大家關注“Java小咖秀”回覆“面試”即可獲得Java小咖秀面試筆記.pdf