1. 程式人生 > >25個Spring面試題

25個Spring面試題

本人收集了一些在大家在面試時被經常問及的關於Spring的主要問題,這些問題有可能在你下次面試時就會被問到。對於本文中未提及的Spring其他模組,我會單獨分享面試的問題和答案。

歡迎大家向我推薦你在面試過程中遇到關於Spring的問題。我會把大家推薦的問題新增到下面的Spring常用面試題清單中供大家參考。

問題清單:

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中依然注入有以下三種實現方式:

  1. 構造器注入
  2. Setter方法注入
  3. 介面注入

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

Spring中的 org.springframework.beans 包和 org.springframework.context包構成了Spring框架IoC容器的基礎。

BeanFactory 介面提供了一個先進的配置機制,使得任何型別的物件的配置成為可能。ApplicationContex介面對BeanFactory(是一個子介面)進行了擴充套件,在BeanFactory的基礎上添加了其他功能,比如與Spring的AOP更容易整合,也提供了處理message resource的機制(用於國際化)、事件傳播以及應用層的特別配置,比如針對Web應用的WebApplicationContext。

org.springframework.beans.factory.BeanFactory 是Spring IoC容器的具體實現,用來包裝和管理前面提到的各種bean。BeanFactory介面是Spring IoC 容器的核心介面。

5、BeanFactory和ApplicationContext有什麼區別?

BeanFactory 可以理解為含有bean集合的工廠類。BeanFactory 包含了種bean的定義,以便在接收到客戶端請求時將對應的bean例項化。

BeanFactory還能在例項化物件的時生成協作類之間的關係。此舉將bean自身與bean客戶端的配置中解放出來。BeanFactory還包含了bean生命週期的控制,呼叫客戶端的初始化方法(initialization methods)和銷燬方法(destruction methods)。

從表面上看,application context如同bean factory一樣具有bean定義、bean關聯關係的設定,根據請求分發bean的功能。但application context在此基礎上還提供了其他的功能。

  1. 提供了支援國際化的文字訊息
  2. 統一的資原始檔讀取方式
  3. 已在監聽器中註冊的bean的事件

以下是三種較常見的 ApplicationContext 實現方式:

1、ClassPathXmlApplicationContext:從classpath的XML配置檔案中讀取上下文,並生成上下文定義。應用程式上下文從程式環境變數中取得。

1 ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);

2、FileSystemXmlApplicationContext :由檔案系統中的XML配置檔案讀取上下文。

1 ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”);

3、XmlWebApplicationContext:由Web應用的XML檔案讀取上下文。

6、Spring有幾種配置方式?

將Spring配置到應用開發中有以下三種方式:

  1. 基於XML的配置
  2. 基於註解的配置
  3. 基於Java的配置

7、如何用基於XML配置的方式配置Spring?

在Spring框架中,依賴和服務需要在專門的配置檔案來實現,我常用的XML格式的配置檔案。這些配置檔案的格式通常用<beans>開頭,然後一系列的bean定義和專門的應用配置選項組成。

SpringXML配置的主要目的時候是使所有的Spring元件都可以用xml檔案的形式來進行配置。這意味著不會出現其他的Spring配置型別(比如宣告的方式或基於Java Class的配置方式)

Spring的XML配置方式是使用被Spring名稱空間的所支援的一系列的XML標籤來實現的。Spring有以下主要的名稱空間:context、beans、jdbc、tx、aop、mvc和aso。

1 2 3 4 5 6 7 8 9 <beans> <!-- JSON Support --> <bean name="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean name="jsonTemplate" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/> <bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/> </beans>

下面這個web.xml僅僅配置了DispatcherServlet,這件最簡單的配置便能滿足應用程式配置執行時元件的需求。

相關推薦

25Spring試題

本人收集了一些在大家在面試時被經常問及的關於Spring的主要問題,這些問題有可能在你下次面試時就會被問到。對於本文中未提及的Spring其他模組,我會單獨分享面試的問題和答案。 歡迎大家向我推薦你在面試過程中遇到關於Spring的問題。我會把大家推薦的問題

25 JavaScript 試題

1、使用 typeof bar === "object" 判斷 bar 是不是一個物件有神馬潛在的弊端?如何避免這種弊端? 使用 typeof 的弊端是顯而易見的(這種弊端同使用 instanceof ): let obj = {}; let arr = []; co

[java學習6]你有必要知道的25JavaScript試題

/**轉:你有必要知道的25個JavaScript面試題 *原文:http://www.jb51.net/article/77140.htm *看到這個文章,覺得js還有很多東西要弄明白。我把目前能接受的執行一下,這裡做個記錄吧。 **/ /**型別判斷 * 看來O

25經典的spring試題----轉載

25個經典的Spring面試問答 這是在網上下載的面試題,忘記了出處,如帶來不便聯絡本人立馬刪除,在這裡提供給將要面試的朋友,與大家分享,希望能給您帶來幫助! 問題清單: 1. 什麼是Spring框架?Spring框架有哪些主要模組? 2. 使用Sp

69 經典 Spring 試題和答案

Spring 概述 1. 什麼是spring? Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴充套件是針對構建J2EE平臺的web應用。Spring 框架目標是簡化Java企業級應用開發,並通過POJO為基礎

Spring試題

destory filesyste 復用 rabl save jdk 代碼 解決 ont 什麽是Spring Spring是一個輕量級的容器,他實現了IOC和非侵入的框架,並提供了AOP的實現方式,提供了持久層事務的支持,其讓java開發模塊化,並且貫穿持久層,邏輯層,

Spring試題和答案

tar aos 好處 責任 strong enc 進行 需求 getter Spring 概述 1. 什麽是spring? Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Sprin

2017年最全的30Android試題,你將如何回答?

fab reat 屬於 微信公眾號 ber 什麽是 進入 細節 註意 百度首頁 登錄 2017年最全的30個Android面試題,你將如何回答? 機翼技術 百家號 03-10 02:32 “三金四銀”又是一年一度的跳槽季,相信有不少An

69道Spring試題和答案

clas 完成 上傳 stp 集合 xml配置 很好 單元測試 簡潔 Spring 概述 1. 什麽是spring? Spring 是個Java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴展是針對構建J2EE平臺的web應用。Spring 框架

關於spring試題

comm 編程) ref str white inside 工廠模式 port 操作 1.spring框架有哪些主要模塊? Spring Core,Spring的核心功能,用IOC容器,解決對象創建以及依賴關系,包含並管理應用對象的配置和生命周期 Spring DAO,S

一線互聯網常見的 14 Java 試題,你顫抖了嗎程序員

don 讀取 需要 內存模型 對象 str 資源 阻塞 問題 跳槽不算頻繁,但參加過不少面試(電話面試、face to face 面試),面過大 / 小公司、互聯網 / 傳統軟件公司,面糊過(眼高手低,缺乏實戰經驗,掛掉),也面過人,所幸未因失敗而氣餒,在此過程中不斷查缺補

史上最全 69 道 Spring 試題和答案

str 路徑 輕量 情況下 list 開發 erp throw 解決方案 史上最全 69 道 Spring 面試題和答案 目錄Spring 概述依賴註入Spring beansSpring註解Spring數據訪問Spring面向切面編程(AOP)Spring MVC S

JAVA關於Spring 試題匯總

客戶 校準 type pre 工廠模式 ont bug spring 配置 用戶 1 Spring 框架有哪些主要模塊? 截止到目前Spring 框架已集成了 20 多個模塊 。 這些模塊主要被分如下圖所示的核心容器 、 數據訪問 / 集成 、Web、AOP (面向切面編程

一線網際網路常見的14Java試題,你顫抖了嗎程式設計師

跳槽不算頻繁,但參加過不少面試(電話面試、face to face面試),面過大/小公司、網際網路/傳統軟體公司,麵糊過(眼高手低,缺乏實戰經驗,掛掉),也面過人,所幸未因失敗而氣餒,在此過程中不斷查缺補漏,養成了踏實、追本溯源、持續改進的習慣,特此將自己經歷過、構思過的一些面試題記錄下來,如果答案有問題

基礎 | 36經典試題,來測一測您的Java基礎

到此為止,「Java基礎」系列的面試點已更新完畢,但關於Java NIO和Java8新特性之Lambda表示式部分的內容還停留在概述階段,不夠系統和深入,後續有機會再深入學習和更新。 在此,主要將Java基礎系列以面試題的形式進行彙總,用做面試前的準備與自測提綱。 公眾號後

java開發試題spring試題總結

unit proto 實現 ase 註解 加載器 ins 所有 spec 今天分享的java實習生常見面試題,是spring專場,主要是針對spring總結的面試題,有需要的小夥伴可以收入囊中了! 1、 Spring Framework 中有多少個模塊,它們分別是什麽? S

spring試題(四):面向切面程式設計AOP+MVC

Spring面向切面程式設計(AOP) 1.  解釋AOP 面向切面的程式設計,或AOP, 是一種程式設計技術,允許程式模組化橫向切割關注點,或橫切典型的責任劃分,如日誌和事務管理。   2. Aspect 切面 AOP

spring試題(三):註解+資料訪問

Spring註解 1. 什麼是基於Java的Spring註解配置? 給一些註解的例子. 基於Java的配置,允許你在少量的Java註解的幫助下,進行你的大部分Spring配置而非通過XML檔案。 以@Configuration 註解為例,它用來標記類可以當做

spring試題(二)

目錄   依賴注入方面 1.什麼是Spring的依賴注入 2.有哪些不同型別的IOC(依賴注入)方式 3.哪種依賴注入方式你建議使用,構造器注入,還是 Setter方法注入 Spring beans方面 1.什麼是Spring be

spring試題(一)

目錄 1.什麼是spring 2.使用spring框架的好處是什麼 3.spring由哪些模組組成 4.核心容器(應用上下文)模組 5.BeanFactory實現舉例 6.XMLBeanFactory 7.解釋AOP模組 8.解釋JDBC抽象和DAO模組 9.解釋