溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring

發(fā)布時間:2020-04-15 16:40:33 來源:網(wǎng)絡(luò) 閱讀:249 作者:java周某人 欄目:編程語言



前言:

最近很多小伙伴都在準備春招,所以筆者我也盡可能的給大家多分享一些面經(jīng)跟面試題,供大家參考學(xué)習,給大家提供一個學(xué)習上的幫助,文末有福利領(lǐng)取


每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



Spring高級面試專題錦集

  1. 什么是 Spring 框架?Spring 框架有哪些主要模塊?

  2. 使用 Spring 框架能帶來哪些好處?

  3. 什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?

  4. 請解釋下 Spring 框架中的 IoC?

  5. BeanFactory 和 ApplicationContext 有什么區(qū)別?

  6. Spring 有幾種配置方式?

  7. 如何用基于 XML 配置的方式配置 Spring?

  8. 如何用基于 Java 配置的方式配置 Spring?

  9. 怎樣用注解的方式配置 Spring?

  10. 請解釋 Spring Bean 的生命周期?

1、什么是 Spring 框架?Spring 框架有哪些主要模塊?

Spring 框架是一個為 Java 應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的 Java 平臺。Spring 幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring 框架本身亦是按照設(shè)計模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring 框架,不必擔心 Spring 是如何在后臺進行工作的。Spring 框架至今已集成了 20 多個模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。


每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



2、使用 Spring 框架能帶來哪些好處?

下面列舉了一些使用 Spring 框架帶來的主要好處:

  • Dependency Injection(DI) 方法使得構(gòu)造器和 JavaBean properties 文件中的依賴關(guān)系一目了然。

  • 與 EJB 容器相比較,IoC 容器更加趨向于輕量級。這樣一來IoC 容器在有限的內(nèi)存和 CPU 資源的情況下進行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。

  • Spring 并沒有閉門造車,Spring 利用了已有的技術(shù)比如ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他視圖技術(shù)。

  • Spring 框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發(fā)者僅僅需要選用他們需要的模塊即可。

  • 要測試一項用 Spring 開發(fā)的應(yīng)用程序十分簡單,因為測試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡單的是,利用JavaBean 形式的 POJO 類,可以很方便的利用依賴注入來寫入測試數(shù)據(jù)。

  • Spring 的 Web 框架亦是一個精心設(shè)計的 Web MVC 框架,為開發(fā)者們在 web 框架的選擇上提供了一個除了主流框架比如Struts、過度設(shè)計的、不流行 web 框架的以外的有力選項。

  • Spring 提供了一個便捷的事務(wù)管理接口,適用于小型的本地事物處理(比如在單 DB 的環(huán)境下)和復(fù)雜的共同事物處理(比如利用 JTA 的復(fù)雜 DB 環(huán)境)。

3、什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?

  1. 控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技巧,對象之間耦合關(guān)系在編譯時通常是未知的。在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應(yīng)用程序中的早已被設(shè)定好關(guān)聯(lián)關(guān)系的對象來決定的。在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對象關(guān)系圖來決定的,該對象關(guān)系圖由裝配器負責實例化,這種實現(xiàn)方式還可以將對象之間的關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過程是通過“依賴注入”實現(xiàn)的。

  2. 控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標組件更多控制為目的設(shè)計范式,并在我們的實際工作中起到了有效的作用。

  3. 依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。這就需要一種機制用來激活相應(yīng)的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要創(chuàng)建哪個組件?

在 Java 中依然注入有以下三種實現(xiàn)方式:

  1. 構(gòu)造器注入

  2. Setter 方法注入

  3. 接口注入

4、請解釋下 Spring 框架中的 IoC?

  • Spring 中的 org.spring framework.beans 包和org.spring framework.context 包構(gòu)成了 Spring 框架 IoC 容器的基礎(chǔ)。

  • Bean Factory 接口提供了一個先進的配置機制,使得任何類型的對象的配置成為可能。Application Context 接口對Bean Factory(是一個子接口)進行了擴展,在 Bean Factory 的基礎(chǔ)上添加了其他功能,比如與 Spring 的 AOP 更容易集成,也提供了處理 message resource 的機制(用于國際化)、事件傳播以及應(yīng)用層的特別配置,比如針對 Web 應(yīng)用的 Web Application Context。

  • org.spring framework.beans.factory.Bean Factory 是 Spring IOC 容器的具體實現(xiàn),用來包裝和管理前面提到的各種bean Bean Factory 接口是 Spring IoC 容器的核心接口。

5、Bean Factory 和 Application Context 有什么區(qū)別?

  • Bean Factory 可以理解為含有 bean 集合的工廠類。Bean Factory 包含了種 bean 的定義,以便在接收到客戶端請求時將對應(yīng)的 bean 實例化。

  • Bean Factory 還能在實例化對象的時生成協(xié)作類之間的關(guān)系。此舉將 bean 自身與 bean 客戶端的配置中解放出來。Bean Factory 還包含了 bean 生命周期的控制,調(diào)用客戶端的初始化方法(initialization methods)和銷毀方法(destruction methods)。

  • 從表面上看,application context 如同 bean factory 一樣具有 bean 定義、bean 關(guān)聯(lián)關(guān)系的設(shè)置,根據(jù)請求分發(fā) bean 的功能。但 application context 在此基礎(chǔ)上還提供了其他的功能。

1. 提供了支持國際化的文本消息

2. 統(tǒng)一的資源文件讀取方式

3. 已在監(jiān)聽器中注冊的 bean 的事件

以下是三種較常見的Application Context 實現(xiàn)方式:

1、Class PathXml Application Context:從 classpath 的 XML 配置文件中讀取上下文,并生成上下文定義。應(yīng)用程序上下文從程序環(huán)境變量中取得。

1\.?ApplicationContext?context?=?newClassPathXmlApplicationContext(“bean.xml”);

2、File System XML Application Context :由文件系統(tǒng)中的XML 配置文件讀取上下文。

1\.?ApplicationContext?context?=?newFileSystemXmlApplicationContext(“bean.xml”);

3、XML Web Application Context:由 Web 應(yīng)用的 XML 文件讀取上下文。

由于篇幅限制,剩下的將以圖片形式展示,對文章中學(xué)習腦圖感興趣的可以 關(guān)注 轉(zhuǎn)發(fā)后私信【資料】即可領(lǐng)取。

每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



  1. Spring Bean 的作用域之間有什么區(qū)別?

  2. 什么是 Spring inner beans?

  3. Spring 框架中的單例 Beans 是線程安全的么?

  4. 請舉例說明如何在Spring中注入一個JavaCollection?

  5. 如何向SpringBean中注入一個Java.util.Properties?

  6. 請解釋SpringBean的自動裝配?

  7. 請解釋自動裝配模式的區(qū)別?

  8. 如何開啟基于注解的自動裝配?

  9. 請舉例解釋@Required注解?

  10. 請舉例解釋@Autowired注解?

  11. 請舉例說明@Qualifier注解?

  12. 構(gòu)造方法注入和設(shè)值注入有什么區(qū)別?

  13. Spring框架中有哪些不同類型的事件?

  14. FileSystemResource和ClassPathResource有何區(qū)別?

  15. Spring框架中都用到了哪些設(shè)計模式?

對文章中學(xué)習腦圖感興趣的可以 關(guān)注 我的供種浩 Java周某人 即可領(lǐng)取。還有更多面試題整理中,可以一并獲取。


每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring



每日刷題:五分鐘備戰(zhàn)春招,你也能輕松過關(guān)Spring


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI