更新時間:2020-11-03 17:30:32 來源:動力節(jié)點 瀏覽8280次
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。隨著Spring框架的流行,Spring Boot在Java開發(fā)中也備受矚目,是不少互聯(lián)網(wǎng)大廠的面試必備題目。下面是為小伙伴們精選的8道Spring Boot面試題2020,可以用來驗證一下自己的實力。
1、簡單的說下什么是 Spring Boot?
Spring Boot 是 Spring 開源組織下的子項目,是 Spring 組件一站式解決方案,主要簡化了使用Spring 的難度,簡略了繁重的配置,提供了各種啟動器,開發(fā)者能快速上手。
2、Spring Boot 自動配置原理是什么?
Spring Boot 項目的啟動注解是:@SpringBootApplication,其實它就是由下面三個注解組成的:
@Configuration
@ComponentScan
@EnableAutoConfiguration
其中 @EnableAutoConfiguration 是實現(xiàn)自動配置的入口,該注解又通過 @Import 注解導入了AutoConfigurationImportSelector,在該類中加載 META-INF/spring.factories 的配置信息。然后篩選出以 EnableAutoConfiguration 為 key 的數(shù)據(jù),加載到 IOC 容器中,實現(xiàn)自動配置功能!
3、Spring Boot 的核心注解是哪個?它主要由哪幾個注解組成的?
啟動類上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要組合包含了以下 3 個注解:
啟動類上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要組合包含了以下 3 個注解:
@SpringBootConfiguration:組合了 @Configuration 注解,實現(xiàn)配置文件的功能。
@EnableAutoConfiguration:打開自動配置的功能,也可以關(guān)閉某個自動配置的選項,如關(guān)閉數(shù)據(jù)源自動配置功能:@SpringBootApplication(exclude{DataSourceAutoConfiguration.class})
@ComponentScan:Spring組件掃描。
4、什么是 Spring Profiles?
Spring Profiles 允許用戶根據(jù)配置文件(dev,test,prod 等)來注冊 bean。因此,當應用程序在開發(fā)中運行時,只有某些 bean 可以加載,而在 PRODUCTION中,某些其他 bean 可以加載。假設我們的要求是 Swagger 文檔僅適用于 QA 環(huán)境,并且禁用所有其他文檔。這可以使用配置文件來完成。Spring Boot 使得使用配置文件非常簡單。
5、什么是 JavaConfig?
Spring JavaConfig 是 Spring 社區(qū)的產(chǎn)品,它提供了配置 Spring IoC 容器的純Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的優(yōu)點在于:
(1)面向?qū)ο蟮呐渲谩S捎谂渲帽欢x為 JavaConfig 中的類,因此用戶可以充分利用 Java 中的面向?qū)ο蠊δ堋R粋€配置類可以繼承另一個,重寫它的@Bean 方法等。
(2)減少或消除 XML 配置。基于依賴注入原則的外化配置的好處已被證明。但是,許多開發(fā)人員不希望在 XML 和 Java 之間來回切換。JavaConfig 為開發(fā)人員提供了一種純 Java 方法來配置與 XML 配置概念相似的 Spring 容器。從技術(shù)角度來講,只使用 JavaConfig 配置類來配置容器是可行的,但實際上很多人認為將JavaConfig 與 XML 混合匹配是理想的。
(3)類型安全和重構(gòu)友好。JavaConfig 提供了一種類型安全的方法來配置 Spring容器。由于 Java 5.0 對泛型的支持,現(xiàn)在可以按類型而不是按名稱檢索 bean,不需要任何強制轉(zhuǎn)換或基于字符串的查找。
6、Spring Boot、Spring MVC 和 Spring 有什么區(qū)別?
1)SpringSpring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉(zhuǎn)。當我們恰當?shù)氖褂?DI 或者是 IOC 的時候,我們可以開發(fā)松耦合應用。松耦合應用的單元測試可以很容易的進行。
2)Spring MVC提供了一種分離式的方法來開發(fā) Web 應用。通過運用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些簡單的概念,開發(fā) Web 應用將會變的非常簡單。
3)Spring 和 SpringMVC 的問題在于需要配置大量的參數(shù)。
4)Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構(gòu)建產(chǎn)品就緒應用程序,Spring Boot 提供了一些非功能性特征。
7、什么是YAML?
YAML是一種人類可讀的數(shù)據(jù)序列化語言。它通常用于配置文件。 與屬性文件相比,如果我們想要在配置文件中添加復雜的屬性,YAML文件就更加結(jié)構(gòu)化,而且更少混淆。可以看出YAML具有分層配置數(shù)據(jù)。
8、Spring Boot 中如何解決跨域問題 ?
跨域可以在前端通過 JSONP 來解決,但是 JSONP 只可以發(fā)送 GET 請求,無法發(fā)送其他類型的請求,在 RESTful 風格的應用中,就顯得非常雞肋,因此我們推薦在后端通過 (CORS,Cross-origin resource sharing) 來解決跨域問題。這種解決方案并非 Spring Boot 特有的,在傳統(tǒng)的 SSM 框架中,就可以通過 CORS 來解決跨域問題,只不過之前我們是在 XML 文件中配置 CORS ,現(xiàn)在可以通過實現(xiàn)WebMvcConfigurer接口然后重寫addCorsMappings方法解決跨域問題。
以上就是為大家精選的8道Spring Boot面試題,并在題后附上了答案,方便學習,能夠為大家的面試帶來一點點幫助想必也是極好的。想要提升自己的面試能力的小伙伴可以觀看本站的Java面試題,企業(yè)真題,每日更新,助力你的面試馬到功成!