前言:
最近很多小夥伴都在準備春招,所以筆者我也儘可能的給大家多分享一些面經跟面試題,供大家參考學習,給大家提供一個學習上的幫助!!!!
Spring高級面試專題錦集
- 什麼是 Spring 框架?Spring 框架有哪些主要模塊?
- 使用 Spring 框架能帶來哪些好處?
- 什麼是控制反轉(IOC)?什麼是依賴注入?
- 請解釋下 Spring 框架中的 IoC?
- BeanFactory 和 ApplicationContext 有什麼區別?
- Spring 有幾種配置方式?
- 如何用基於 XML 配置的方式配置 Spring?
- 如何用基於 Java 配置的方式配置 Spring?
- 怎樣用註解的方式配置 Spring?
- 請解釋 Spring Bean 的生命週期?
1、什麼是 Spring 框架?Spring 框架有哪些主要模塊?
Spring 框架是一個為 Java 應用程序的開發提供了綜合、廣泛的基礎性支持的 Java 平臺。
Spring 幫助開發者解決了開發中基礎性的問題,使得開發人員可以專注於應用程序的開發。
Spring 框架本身亦是按照設計模式精心打造,這使得我們可以在開發環境中安心的集成Spring 框架,不必擔心 Spring 是如何在後臺進行工作的。
Spring 框架至今已集成了 20 多個模塊。
這些模塊主要被分如下圖所示的核心容器、數據訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。
2、使用 Spring 框架能帶來哪些好處?
下面列舉了一些使用 Spring 框架帶來的主要好處:
- Dependency Injection(DI) 方法使得構造器和 JavaBean properties 文件中的依賴關係一目瞭然。
- 與 EJB 容器相比較,IoC 容器更加趨向於輕量級。這樣一來IoC 容器在有限的內存和 CPU 資源的情況下進行應用程序的開發和發佈就變得十分有利。
- Spring 並沒有閉門造車,Spring 利用了已有的技術比如ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他視圖技術。
- Spring 框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發者僅僅需要選用他們需要的模塊即可。
- 要測試一項用 Spring 開發的應用程序十分簡單,因為測試相關的環境代碼都已經囊括在框架中了。更加簡單的是,利用JavaBean 形式的 POJO 類,可以很方便的利用依賴注入來寫入測試數據。
- Spring 的 Web 框架亦是一個精心設計的 Web MVC 框架,為開發者們在 web 框架的選擇上提供了一個除了主流框架比如Struts、過度設計的、不流行 web 框架的以外的有力選項。
- Spring 提供了一個便捷的事務管理接口,適用於小型的本地事物處理(比如在單 DB 的環境下)和複雜的共同事物處理(比如利用 JTA 的複雜 DB 環境)。
3、什麼是控制反轉(IOC)?什麼是依賴注入?
- 控制反轉是應用於軟件工程領域中的,在運行時被裝配器對象來綁定耦合對象的一種編程技巧,對象之間耦合關係在編譯時通常是未知的。
- 在傳統的編程方式中,業務邏輯的流程是由應用程序中的早已被設定好關聯關係的對象來決定的。在使用控制反轉的情況下,業務邏輯的流程是由對象關係圖來決定的,該對象關係圖由裝配器負責實例化,這種實現方式還可以將對象之間的關聯關係的定義抽象化。
- 而綁定的過程是通過“依賴注入”實現的。
- 控制反轉是一種以給予應用程序中目標組件更多控制為目的設計範式,並在我們的實際工作中起到了有效的作用。
- 依賴注入是在編譯階段尚未知所需的功能是來自哪個的類的情況下,將其他對象所依賴的功能對象實例化的模式。這就需要一種機制用來激活相應的組件以提供特定的功能,所以依賴注入是控制反轉的基礎。否則如果在組件不受框架控制的情況下,框架又怎麼知道要創建哪個組件?
在 Java 中依然注入有以下三種實現方式:
- 構造器注入
- Setter 方法注入
- 接口注入
4、請解釋下 Spring 框架中的 IoC?
- Spring 中的 org.spring framework.beans 包和org.spring framework.context 包構成了 Spring 框架 IoC 容器的基礎。
- Bean Factory 接口提供了一個先進的配置機制,使得任何類型的對象的配置成為可能。Application Context 接口對Bean Factory(是一個子接口)進行了擴展,在 Bean Factory 的基礎上添加了其他功能,比如與 Spring 的 AOP 更容易集成,也提供了處理 message resource 的機制(用於國際化)、事件傳播以及應用層的特別配置,比如針對 Web 應用的 Web Application Context。
- org.spring framework.beans.factory.Bean Factory 是 Spring IOC 容器的具體實現,用來包裝和管理前面提到的各種bean Bean Factory 接口是 Spring IoC 容器的核心接口。
5、Bean Factory 和 Application Context 有什麼區別?
- Bean Factory 可以理解為含有 bean 集合的工廠類。Bean Factory 包含了種 bean 的定義,以便在接收到客戶端請求時將對應的 bean 實例化。
- Bean Factory 還能在實例化對象的時生成協作類之間的關係。此舉將 bean 自身與 bean 客戶端的配置中解放出來。Bean Factory 還包含了 bean 生命週期的控制,調用客戶端的初始化方法(initialization methods)和銷燬方法(destruction methods)。
- 從表面上看,application context 如同 bean factory 一樣具有 bean 定義、bean 關聯關係的設置,根據請求分發 bean 的功能。但 application context 在此基礎上還提供了其他的功能。
1. 提供了支持國際化的文本消息
2. 統一的資源文件讀取方式
3. 已在監聽器中註冊的 bean 的事件
以下是三種較常見的Application Context 實現方式:
1、Class PathXml Application Context:從 classpath 的 XML 配置文件中讀取上下文,並生成上下文定義。應用程序上下文從程序環境變量中取得。
<code>1\\. ApplicationContext context = newClassPathXmlApplicationContext(“bean.xml”);/<code>
2、File System XML Application Context :由文件系統中的XML 配置文件讀取上下文。
<code>1\\. ApplicationContext context = newFileSystemXmlApplicationContext(“bean.xml”);/<code>
3、XML Web Application Context:由 Web 應用的 XML 文件讀取上下文。
- Spring Bean 的作用域之間有什麼區別?
- 什麼是 Spring inner beans?
- Spring 框架中的單例 Beans 是線程安全的麼?
- 請舉例說明如何在Spring中注入一個JavaCollection?
- 如何向SpringBean中注入一個Java.util.Properties?
- 請解釋SpringBean的自動裝配?
- 請解釋自動裝配模式的區別?
- 如何開啟基於註解的自動裝配?
- 請舉例解釋@Required註解?
- 請舉例解釋@Autowired註解?
- 請舉例說明@Qualifier註解?
- 構造方法注入和設值注入有什麼區別?
- Spring框架中有哪些不同類型的事件?
- FileSystemResource和ClassPathResource有何區別?
- Spring框架中都用到了哪些設計模式?
以上就是spring相關專題,下面展示了部分資料,希望也能幫助到大家,對編程感興趣的朋友,如果能幫到你請點贊、點贊、點贊:
整理的 pdf 文檔:
源碼分析專題部分課程:
獲取方式
點贊,收藏並轉發文章後點擊小編頭像或暱稱,關注後私信回覆:【11】 即可
舉手之勞,非常感謝
閱讀更多 java架構師小旭 的文章