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