SpringBoot 面試題
1、談談你對Spring Boot的理解?
????SpringBoot主要用來簡化使用Spring的難度和繁重的XML配置,它是Spring組件的一站式解決方案,采取了習慣優(yōu)于配置的方法。通過.properties或者.yml文件替代了Spring繁雜的XML配置文件,同時支持@ImportResource注解加載XML配置。Spring Boot還提供了嵌入式HTTP服務器、命令行接口工具、多種插件等等,使得應用程序的測試和開發(fā)簡單起來。
????1、可以快速構建項目;
????2、可以對主流開發(fā)框架的無配置集成;
????3、項目可獨立運行,無需外部依賴Servlet容器;
????4、提供運行時的應用監(jiān)控;
????5、可以極大地提高開發(fā)、部署效率;
????6、可以與云計算天然集成。
2、Spring Boot Starter有什么用?
????Spring Boot通過提供眾多起步依賴(Starter)降低項目依賴的復雜度。起步依賴本質上是一個Maven項目對象模型(Project Object Model, POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。很多起步依賴的命名都暗示了它們提供的某種或某類功能。
舉例來說,你打算把這個閱讀列表應用程序做成一個Web應用程序。與其向項目的構建文件里添加一堆單獨的庫依賴,還不如聲明這是一個Web應用程序來得簡單。你只要添加Spring Boot的Web起步依賴就好了。
3、 介紹Spring Boot的啟動流程;*
????首先,Spring Boot項目創(chuàng)建完成會默認生成一個名為 *application 的入口類,我們是通過該類的main方法啟動Spring Boot項目的。在main方法中,通過Springapplication的靜態(tài)方法,即run方法進行Springapplication類的實例化操作,然后再針對實例化對象調(diào)用另外一個run方法來完成整個項目的初始化和啟動。Springapplication調(diào)用的run方法的大致流程:
????1、獲取SpringapplicationListener監(jiān)聽器;
????2、啟動所獲取到的所有監(jiān)聽器;
????3、初始化ConfigurableEnvironment(配置文件);
????4、打印Banner圖標;
????5、創(chuàng)建容器ConfigurableapplicationContext;
????6、準備容器ConfigurableapplicationContext;
????7、初始化容器ConfigurableapplicationContext;
????8、監(jiān)聽器通知容器啟動完成;
????9、監(jiān)聽器通知容器正在運行;
除了上述核心操作,run方法運行過程中還涉及啟動時長統(tǒng)計、異常報告、啟動日志、異常處理等輔助操作
4、請描述Spring Boot自動裝配的過程;*
????@EnableAutoConfiguration注解、 @Configuration注解和 @ConditionalOnClass注解組成了Spring Boot自動配置的核心,首先它得是一個配置文件,其次根據(jù)類路徑下是否有這個類去自動配置。具體是通過maven讀取每個starter中的spring.factories文件,該文件配置了所有需要被創(chuàng)建在spring容器中的bean。
5、說說你對Spring Boot注解的了解;*
????1、@SpringBootapplication注解:
????在Spring Boot入口類中,唯一的一個注解就是@SpringBootapplication。它是Spring Boot項目的核心注解,用于開啟自動配置,準確說是通過該注解內(nèi)組合的@EnableAutoConfiguration開啟了自動配置。
????2、@EnableAutoConfiguration注解:
????允許 Spring Boot 自動配置注解,開啟這個注解之后,Spring Boot 就能根據(jù)當前類路徑下的包或者類來配置 Spring Bean。
????3、@Conditional注解:
????@Conditional注解是由Spring 4.0版本引入的新特性,可根據(jù)是否滿足指定的條件來決定是否進行Bean的實例化及裝配。
6、Spring、SpringMVC和Springboot的區(qū)別;*
1、Spring
? ? ? Spring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。
? ? ? ? ?當我們恰當?shù)氖褂?DI 或者是 IOC 的時候,我們可以開發(fā)松耦合應用。松耦合應用的單元測 ? ? ?試可以很容易的進行。
2、Spring MVC
????? Spring MVC 提供了一種分離式的方法來開發(fā) Web 應用。通過運用像 DispatcherServelet, ? MoudlAndView 和 ViewResolver 等一些簡單的概念,開發(fā) Web 應用將會變的非常簡單。
3、SpringBoot
????Spring 和 SpringMVC 的問題在于需要配置大量的參數(shù)。
7、關于SpringBoot配置的一些問題;
1、Spring Boot 的核心配置文件有哪幾個?它們的區(qū)別是什么?
????Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件主要用于 Spring Boot 項目的自動化配置。 bootstrap 配置文件有三個應用場景。 使用Spring Cloud Config配置中心時,需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性,來加載外部配置中心的配置信息; 一些固定的不能被覆蓋的屬性; 一些加密或解密的場景;
2、Spring Boot 的配置文件有哪幾種格式?它們有什么區(qū)別?
????主要有.properties 和 .yml格式,它們的區(qū)別主要是書寫格式不同。另外,.yml 格式不支持 @PropertySource 注解導入配置。
3、你如何理解 Spring Boot 配置加載順序?
? ? ?Spring Boot配置加載順序優(yōu)先級是:propertiese文件、YAML文件、系統(tǒng)環(huán)境變量、命令行參數(shù)。
? ? YAML 是一種可讀的數(shù)據(jù)序列化語言,它通常用于配置文件。
優(yōu)點:
????配置有序
????支持數(shù)組,數(shù)組中的元素可以是基本數(shù)據(jù)類型或者對象?
????簡潔方便
5、Spring Boot 是否可以使用 XML 配置 , Spring Boot 可以兼容老 Spring 項目嗎;
????Spring Boot 推薦使用 Java 配置同時支持 XML 配置,通過 @ImportResource 注解加載 XML 配置;
? ?可以兼容,使用 @ImportResource 注解導入老 Spring 項目配置文件。
6、application.properties和bootstrap.properties有何區(qū)別;
????bootstrap比 applicaton 優(yōu)先加載,配置在應用程序上下文的引導階段生效, 而且boostrap 里面的屬性不能被覆蓋; application用于 spring boot 項目的自動化配置。
以上內(nèi)容僅供參考,請合理利用搜索引擎!