面試題一Spring Boot
-
什麼是Spring Boot?
Spring Boot是Spring開源組織下的子項目,是Spring組件一站式解決方案,主要是簡化了使用Spring的難度,簡化了繁重的配置,提供了各種啓動器,開發者能快速上手。
-
爲什麼要用Spring Boot?
Spring Boot優點非常多,如:
- 獨立運行:內嵌了各種servlet容器,Tomcat、Jetty等,只需要打成一個可執行的jar包就能獨立運行
- 簡化配置:spring-boot-starter-web啓動器自動依賴其他組件,減少了maven的配置。
- 自動配置:能根據當前類路徑下的類、jar包來自動配置bean,如添加一個spring-boot-starter-web啓動器就能擁有web的功能,無需其他配置。
- 無代碼生成和XML配置:配置過程中無代碼生成,也無需XML配置文件就能完成所有配置工作,這一切都是藉助於條件註解完成的,這也是Spring4.x的核心功能之一。
-
Spring Boot的核心配置文件有哪幾個?它們的區別是什麼?
Spring Boot的核心配置文件是application和bootstrap配置文件
application配置文件主要用於Spring Boot項目的自動化配置。
bootstrap 配置文件具有以下幾個特性:
- boostrap 由父 ApplicationContext 加載,比 applicaton 優先加載
- boostrap 裏面的屬性不能被覆蓋
bootstrap配置文件有以下幾個應用場景:
- 使用 Spring Cloud Config 配置中心時,這時需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性來加載外部配置中心的配置信息;
- 一些固定的不能被覆蓋的屬性;
- 一些加密/解密的場景;
-
Spring Boot的配置文件有哪幾種格式?他們有什麼區別?
.properties和.yml,它們的區別主要是書寫格式不同
-
.properties
app.user.name = java
-
.yml
app: user: name:java
.yml 格式不支持
@PropertySource
註解導入配置。
-
-
Spring Boot的核心註解是哪個?它主要由哪幾個註解組成?
啓動類上的註解@SpringBootApplication,主要包含以下三個註解:
-
@SpringBootConfiguration;組合了@Configuration註解,實現配置文件的功能。
-
@EnableAutoConfiguration:打開自動化配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能:
-
@ComponentScan:Spring組件掃描
-
-
開啓Spring Boot特性有幾種方式?
- 繼承spring-boot-starter-parent項目
- 導入spring-boot-dependencies項目依賴
-
在Spring啓動應用程序中配置日誌記錄的方法是什麼?
開發人員可以在application.properties文件中輕鬆指定日誌記錄級別:
應用程序屬性文件中的這一行將讓spring框架記錄到調試級別。
如果開發人員想要將日誌放入文件,他可以在應用程序屬性中指定logger.fileLogging.file = $ {java.io.tempdirectory} /sample.log
除了上述兩種方法之外,開發人員還可以在main / java / resources下創建logback.xml文件,並在文件中指定日誌記錄配置。 Spring啓動會自動選擇這個文件。
-
如何理解Spring boot中的starters?
starters是什麼:
可以理解爲啓動器,它辦好一系列可以集成到應用裏的依賴包,你可以一站式集成Spring及其他技術,不需要到處找依賴包。如你想使用Spring JPA訪問數據庫,只要加入spring-boot-starter-data-jpa啓動器依賴就能使用了。
starters命名:
Spring Boot官方的啓動器都是以spring-boot-starter-命名的,代表了一個特定的應用類型。第三方的啓動器不能以spring-boot開頭命名,它們都被Spring Boot官方保留。一般一個第三方的應該這樣命名,像mybatis的mybatis-spring-boot-starter。
-
Spring Boot實現熱部署有哪幾種方式?
-
引用devtools依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
-
自定義配置熱部署:
#熱部署開關,false即不啓動熱部署 spring.devtools.restart.enabled:true #指定目錄不更新 spring.devtools.restart.exclude:test/**
-