每日十題:五分鐘備戰金九銀十,你也能輕鬆過關Spring
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 配置檔案中讀取上下文,並生成上下文定義。應用程式上下文從程式環境變數中取得。
1\. ApplicationContext context = newClassPathXmlApplicationContext(“bean.xml”);
2、File System XML Application Context :由檔案系統中的XML 配置檔案讀取上下文。
1\. ApplicationContext context = newFileSystemXmlApplicationContext(“bean.xml”);
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框架中都用到了哪些設計模式?
對文章中學習腦圖感興趣的可以 關注 轉發後私信【筆記】獲取資源地址。還有更多面試題整理中,可以一併獲取。
歡迎關注專欄: Java架構技術進階。裡面有大量batj面試題集錦,還有各種技術分享,如有好文章也歡迎投稿哦。 微信公眾號:慕容千語的架構筆記。歡迎關注一起進步。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555445/viewspace-2654653/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android&Java面試題大全—金九銀十面試必備AndroidJava面試題
- “金九銀十”,產品經理面試準備手冊面試
- 金九銀十來了,你的簡歷寫好了麼?
- Java開發:錯過金三銀四 你還要錯過金九銀十嗎?面試大綱總結Java面試
- 金九銀十中,看看這31道Android面試題Android面試題
- 金九銀十,教你如何高效的促單LJF
- 十分鐘輕鬆讓你認識ASP.NET MVC6ASP.NETMVC
- 帶你十天輕鬆搞定 Go 微服務系列(九、鏈路追蹤)Go微服務
- 金九銀十Android面試複習題集:關於四大元件中的Activity你瞭解多少?Android面試元件
- 【面試篇】金九銀十面試季,這些面試題你都會了嗎?面試題
- mac新手教程:十分鐘輕鬆熟悉操作Mac系統Mac
- 十個vim快捷鍵,讓你的使用更輕鬆
- 帶你十天輕鬆搞定 Go 微服務系列(六)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(七)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(一)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(二)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(四)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(五)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(三)Go微服務
- Flutter | 金九銀十招聘季,這些面試題祝你一臂之力Flutter面試題
- 金九銀十“換機季”,當心Android Native病毒“邪風入體”Android
- Security+認證812分輕鬆考過(備戰分享)
- 金九銀十要來了?不要慌,這些Android BAT高階面試題刷一刷AndroidBAT面試題
- 上億條資料,OurwayBI也能輕鬆搞定
- [每日一題] 第十題:替換空格每日一題
- 金九銀十跳槽季,JAVA兩年經驗樂信面經分享。已拿offerJava
- 2024年程式設計師金九銀十面試寶典(持續更新中................)程式設計師面試
- 備戰2022春招,這十道題必回!
- 十分鐘教條與經驗,輕鬆搞定系統分析師的案例分析
- 2020年“金九銀十”的面試寶典:騰訊,位元組等大廠面試真題彙總面試
- 分享:Redis叢集詳述(面試官再怎麼問也能輕輕鬆鬆!)Redis面試
- 零基礎也能輕鬆學會IT開發
- 帶你十天輕鬆搞定 Go 微服務系列(八、服務監控)Go微服務
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(一)筆記Go微服務
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(二)筆記Go微服務
- Android:金九銀十怎麼從中小企業擠進一線大廠?大廠面試題問的深度?Android面試題
- 不會用修圖工具沒關係,Excel也能輕鬆更換照片底色Excel
- [譯]輕鬆十步走,帶你領略JS呼叫棧的執行原理JS