全網最全Spring面試題之基礎篇整理總結(共69題,附超詳細解答)

flynike發表於2021-09-09

收集整理了一些spring面試的問題,這些問題可能會在你下一次技術面試中遇到。但是想成為,這些都是不可避免也是必須要掌握的,對於其他spring模組,我後續也將單獨分享面試問題和答案。成為的這條路道阻且艱,但是既然選擇了遠方就是選擇了風雨兼程,希望大家都能早日圓自己的架構師夢,同樣也希望我自己可以
共計5795字

1. 什 麼 是 spring?
Spring 是 個 java 企 業 級 應 用 的 開 源 開 發 框 架 。Spring主 要 用 來 開 發 Java 應 用 , 但 是 有 些 擴 展 是 針 對 構 建J2EE 平 臺 的 web 應 用 。Spring 框 架 目 標 是 簡 化 Java企 業 級 應 用 開 發 , 並 通 過 POJO 為 基 礎 的 編 程 模 型 促 進良 好 的 編 程 習 慣 。

2. 使 用 Spring 框 架 的 好 處 是 什 麼 ?
輕 量 :Spring 是 輕 量 的 , 基 本 的 版 本 大 約 2MB。
控 制 反 轉 :Spring 通 過 控 制 反 轉 實 現 了 松 散 耦 合 , 對 象們 給 出 它 們 的 依 賴 , 而 不 是 創 建 或 查 找 依 賴 的 對 象 們 。
面 向 切 面 的 編 程(AOP):Spring 支 持 面 向 切 面 的 編 程 ,並 且 把 應 用 業 務 邏 輯 和 系 統 服 務 分 開 。
容 器 :Spring 包 含 並 管 理 應 用 中 對 象 的 生 命 周 期 和 配置 。
MVC 框 架:Spring 的 WEB 框 架 是 個 精 心 設 計 的 框 架 ,是 Web 框 架 的 一 個 很 好 的 替 代 品 。
事 務 管 理 :Spring 提 供 一 個 持 續 的 事 務 管 理 接 口 , 可 以擴 展 到 上 至 本 地 事 務 下 至 全 局 事 務 (JTA) 。
異 常 處 理 :Spring 提 供 方 便 的 API 把 具 體 技 術 相 關 的 異常 ( 比 如 由 JDBC,Hibernate or JDO 拋 出 的 ) 轉 化 為一 致 的 unchecked 異 常 。

3. Spring 由 哪 些 模 塊 組 成?
以 下 是 Spring 框 架 的 基 本 模 塊 :
Core module
Bean module
Context module
Expression Language module
JDBC module
ORM module
OXM module
Java Messaging Service(JMS) module
Transaction module
Web module
Web-Servlet module
Web-Struts module
Web-Portlet module

4. 核 心 容 器 ( 應 用 上 下 文) 模 塊 。
這 是 基 本 的 Spring 模 塊 , 提 供 spring 框 架 的 基 礎 功能 ,BeanFactory 是 任 何 以 spring 為 基 礎 的 應 用 的 核心 。Spring 框 架 建 立 在 此 模 塊 之 上 , 它 使 Spring 成 為一 個 容 器 。

5. BeanFactory – BeanFactory 實 現 舉 例 。
Bean 工 廠 是 工 廠 模 式 的 一 個 實 現 , 提 供 了 控 制 反 轉 功能 , 用 來 把 應 用 的 配 置 和 依 賴 從 正 真 的 應 用 代 碼 中 分離 。
最 常 用 的 BeanFactory 實 現 是 XmlBeanFactory 類 。

6. XMLBeanFactory
最 常 用 的 就 是
org.springframework.beans.factory.xml.XmlBeanFactory , 它 根 據 XML 文 件 中 的 定 義 加 載 beans。 該 容 器從 XML 文 件 讀 取 配 置 元 數 據 並 用 它 去 創 建 一 個 完 全 配 置的 系 統 或 應 用 。

7. 解 釋 AOP 模 塊
AOP 模 塊 用 於 發 給 我 們 的 Spring 應 用 做 面 向 切 面 的 開發 , 很 多 支 持 由 AOP 聯 盟 提 供 , 這 樣 就 確 保 了 Spring和 其 他 AOP 框 架 的 共 通 性 。 這 個 模 塊 將 元 數 據 編 程 引 入Spring。

8. 解 釋 JDBC 抽 象 和 DAO 模 塊 。
通 過 使 用 JDBC 抽 象 和 DAO 模 塊 , 保 證 數 據 庫 代 碼 的 簡潔 , 並 能 避 免 數 據 庫 資 源 錯 誤 關 閉 導 致 的 問 題 , 它 在 各種 不 同 的 數 據 庫 的 錯 誤 信 息 之 上 , 提 供 了 一 個 統 一 的 異常 訪 問 層 。 它 還 利 用 Spring 的 AOP 模 塊 給 Spring 應用 中 的 對 象 提 供 事 務 管 理 服 務 。

9. 解 釋 對 象/關 系 映 射 集 成 模 塊 。
Spring 通 過 提 供 ORM 模 塊 , 支 持 我 們 在 直 接 JDBC 之上 使 用 一 個 對 象/關 系 映 射 映 射(ORM)工 具 ,Spring 支援 集 成 主 流 的 ORM 框 架 , 如 Hiberate,JDO 和iBATIS SQL Maps。Spring 的 事 務 管 理 同 樣 支 持 以 上所 有 ORM 框 架 及 JDBC。

10. 解 釋 WEB 模 塊 。
Spring 的 WEB 模 塊 是 構 建 在 application context 模組 基 礎 之 上 , 提 供 一 個 適 合 web 應 用 的 上 下 文 。 這 個 模組 也 包 括 支 持 多 種 面 向 web 的 任 務 , 如 透 明 地 處 理 多 個文 件 上 傳 請 求 和 程 序 級 請 求 參 數 的 綁 定 到 你 的 業 務 物件 。 它 也 有 對 Jakarta Struts 的 支 持 。

12. Spring 配 置 文 件
Spring 配 置 文 件 是 個 XML 文 件 , 這 個 文 件 包 含 了 類 資訊 , 描 述 了 如 何 配 置 它 們 , 以 及 如 何 相 互 調 用 。

13. 什 麼 是 Spring IOC 容 器 ?
Spring IOC 負 責 創 建 對 象 , 管 理 對 象 ( 通 過 依 賴 注 入(DI) , 裝 配 對 象 , 配 置 對 象 , 並 且 管 理 這 些 對 象 的 整個 生 命 周 期 。

14. IOC 的 優 點 是 什 麼 ?
IOC 或 依 賴 注 入 把 應 用 的 代 碼 量 降 到 最 低 。 它 使 應 用 容易 測 試 , 單 元 測 試 不 再 需 要 單 例 和 JNDI 查 找 機 制 。 最小 的 代 價 和 最 小 的 侵 入 性 使 松 散 耦 合 得 以 實 現 。IOC 容器 支 持 加 載 服 務 時 的 餓 漢 式 初 始 化 和 懶 加 載 。

15. ApplicationContext 通 常 的 實 現 是 什 麼?
 FileSystemXmlApplicationContext :此 容 器 從 一 個XML 文 件 中 加 載 beans 的 定 義 ,XML Bean 配 置 文 件 的全 路 徑 名 必 須 提 供 給 它 的 構 造 函 數 。
 ClassPathXmlApplicationContext:此 容 器 也 從 一 個XML 文 件 中 加 載 beans 的 定 義 , 這 裡 , 你 需 要 正 確 設 置classpath 因 為 這 個 容 器 將 在 classpath 裡 找 bean 配置 。
 WebXmlApplicationContext:此 容 器 加 載 一 個 XML文 件 , 此 文 件 定 義 了 一 個 WEB 應 用 的 所 有 bean。

16. Bean 工 廠 和 Application contexts 有 什 麼 區別 ?
Application contexts 提 供 一 種 方 法 處 理 文 本 消 息 , 一個 通 常 的 做 法 是 加 載 文 件 資 源 ( 比 如 鏡 像 ) , 它 們 可 以向 注 冊 為 監 聽 器 的 bean 發 布 事 件 。 另 外 , 在 容 器 或 容器 內 的 對 象 上 執 行 的 那 些 不 得 不 由 bean 工 廠 以 程 序 化方 式 處 理 的 操 作 , 可 以 在 Application contexts 中 以 宣告 的 方 式 處 理 。Application contexts 實 現 了MessageSource 接 口 , 該 接 口 的 實 現 以 可 插 拔 的 方 式 提供 獲 取 本 地 化 消 息 的 方 法 。

17. 一 個 Spring 的 應 用 看 起 來 象 什 麼 ?
 一 個 定 義 了 一 些 功 能 的 接 口 。
 這 實 現 包 括 屬 性 , 它 的 Setter , getter 方 法 和 函 數等 。
 Spring AOP
 Spring 的 XML 配 置 文 件
 使 用 以 上 功 能 的 客 戶 端 程 序依 賴 注 入

18. 什 麼 是 Spring 的 依 賴 注 入 ?
依 賴 注 入 , 是 IOC 的 一 個 方 面 , 是 個 通 常 的 概 念 , 它 有多 種 解 釋 。 這 概 念 是 說 你 不 用 創 建 對 象 , 而 只 需 要 描 述它 如 何 被 創 建 。 你 不 在 代 碼 裡 直 接 組 裝 你 的 組 件 和 服務 , 但 是 要 在 配 置 文 件 裡 描 述 哪 些 組 件 需 要 哪 些 服 務 ,之 後 一 個 容 器 (IOC 容 器 ) 負 責 把 他 們 組 裝 起 來 。

19. 有 哪 些 不 同 類 型 的 IOC( 依 賴 注 入 ) 方 式 ?
 構 造 器 依 賴 注 入 :構 造 器 依 賴 注 入 通 過 容 器 觸 發 一 個 類的 構 造 器 來 實 現 的 , 該 類 有 一 系 列 參 數 , 每 個 參 數 代 表一 個 對 其 他 類 的 依 賴 。
 Setter 方 法 注 入 :Setter 方 法 注 入 是 容 器 通 過 調 用 無 參構 造 器 或 無 參 static 工 廠 方 法 實 例 化 bean 之 後 , 調 用該 bean 的 setter 方 法 , 即 實 現 了 基 於 setter 的 依 賴 注入 。

20. 哪 種 依 賴 注 入 方 式 你 建 議 使 用 , 構 造 器 注 入 , 還 是Setter 方 法 注 入 ?
你 兩 種 依 賴 方 式 都 可 以 使 用 , 構 造 器 注 入 和 Setter 方 法注 入 。 最 好 的 解 決 方 案 是 用 構 造 器 參 數 實 現 強 制 依 賴 ,setter 方 法 實 現 可 選 依 賴 。

21.什 麼 是 Spring beans?
Spring beans 是 那 些 形 成 Spring 應 用 的 主 幹 的 java 物件 。 它 們 被 Spring IOC 容 器 初 始 化 , 裝 配 , 和 管 理 。 這些 beans 通 過 容 器 中 配 置 的 元 數 據 創 建 。 比 如 , 以 XML文 件 中 的 形 式 定 義 。
Spring 框 架 定 義 的 beans 都 是 單 件 beans。 在bean tag 中 有 個 屬 性”singleton”, 如 果 它 被 賦 為TRUE,bean 就 是 單 件 , 否 則 就 是 一 個prototype bean。 默 認 是 TRUE, 所 以 所 有 在 Spring框 架 中 的 beans 缺 省 都 是 單 件 。

22. 一 個 Spring Bean 定 義 包 含 什 麼 ?
一 個 Spring Bean 的 定 義 包 含 容 器 必 知 的 所 有 配 置 元 資料 , 包 括 如 何 創 建 一 個 bean, 它 的 生 命 周 期 詳 情 及 它 的依 賴 。

23. 如 何 給 Spring 容 器 提 供 配 置 元 數 據?
這 裡 有 三 種 重 要 的 方 法 給 Spring 容 器 提 供 配 置 元 資料 。
XML 配 置 文 件 。
基 於 注 解 的 配 置 。
基 於 java 的 配 置 。

24. 你 怎 樣 定 義 類 的 作 用 域?
當 定 義 一 個 在 Spring 裡 , 我 們 還 能 給 這 個bean 聲 明 一 個 作 用 域 。 它 可 以 通 過 bean 定 義 中 的scope 屬 性來 定 義 。 如 , 當 Spring 要 在 需 要 的 時 候 每 次生 產 一 個 新 的 bean 實 例 ,bean 的 scope 屬 性 被 指 定 為prototype。 另 一 方 面 , 一 個 bean 每 次 使 用 的 時 候 必 須返 回 同 一 個 實 例 , 這 個 bean 的 scope 屬 性 必 須 設 為singleton。

25. 解 釋 Spring 支 持 的 幾 種 bean 的 作 用 域 。
Spring 框 架 支 持 以 下 五 種 bean 的 作 用 域 :
 singleton : bean 在 每 個 Spring ioc 容 器 中 只 有 一 個 例項 。
 prototype: 一 個 bean 的 定 義 可 以 有 多 個 實 例 。
 request: 每 次 http 請 求 都 會 創 建 一 個 bean, 該 作 用域 僅 在 基 於 web 的 Spring ApplicationContext 情 形 下有 效 。
 session: 在 一 個 HTTP Session 中 , 一 個 bean 定 義 對應 一 個 實 例 。 該 作 用 域 僅 在 基 於 web 的Spring ApplicationContext 情 形 下 有 效 。
 global-session: 在 一 個 全 局 的 HTTP Session 中 , 一個 bean 定 義 對 應 一 個 實 例 。 該 作 用 域 僅 在 基 於 web 的Spring ApplicationContext 情 形 下 有 效 。缺 省 的 Spring bean 的 作 用 域 是 Singleton.

26. Spring 框 架 中 的 單 例 bean 是 線 程 安 全 的 嗎?
不 ,Spring 框 架 中 的 單 例 bean 不 是 線 程 安 全 的 。

27. 解 釋 Spring 框 架 中 bean 的 生 命 周 期 。
 Spring 容 器 從 XML 文 件 中 讀 取 bean 的 定 義 , 並 實 例化 bean。
 Spring 根 據 bean 的 定 義 填 充 所 有 的 屬 性 。
 如 果 bean 實 現 了 BeanNameAware 接 口 ,Spring 傳遞 bean 的 ID 到 setBeanName 方 法 。
 如 果 Bean 實 現 了 BeanFactoryAware 接 口 , Spring傳 遞 beanfactory 給 setBeanFactory 方 法 。
 如 果 有 任 何 與 bean 相 關 聯 的 BeanPostProcessors,Spring 會 在 postProcesserBeforeInitialization()方 法內 調 用 它 們 。
 如 果 bean 實 現 IntializingBean 了 , 調 用 它 的afterPropertySet 方 法 , 如 果 bean 聲 明 了 初 始 化 方法 , 調 用 此 初 始 化 方 法 。
 如 果 有 BeanPostProcessors 和 bean 關 聯 , 這 些 bean的 postProcessAfterInitialization() 方 法 將 被 調 用 。
 如 果 bean 實 現 了 DisposableBean, 它 將 調 用destroy()方 法 。

28. 哪 些 是 重 要 的 bean 生 命 周 期 方 法 ? 你 能 重 載 它 們嗎 ?
有 兩 個 重 要 的 bean 生 命 周 期 方 法 , 第 一 個 是 setup ,它 是 在 容 器 加 載 bean 的 時 候 被 調 用 。 第 二 個 方 法 是teardown 它 是 在 容 器 卸 載 類 的 時 候 被 調 用 。The bean 標 籤 有 兩 個 重 要 的 屬 性 (init-method 和destroy-method) 。 用 它 們 你 可 以 自 己 定 制 初 始 化 和 登出 方 法 。 它 們 也 有 相 應 的 注 解 (@PostConstruct 和@PreDestroy) 。

29. 什 麼 是 Spring 的 內 部 bean?
當 一 個 bean 僅 被 用 作 另 一 個 bean 的 屬 性 時 , 它 能 被 宣告 為 一 個 內 部 bean, 為 了 定 義 inner bean, 在 Spring的 基 於 XML 的 配 置 元 數 據 中 , 可 以 在 或 元 素 內 使 用 元 素 , 內部 bean 通 常 是 匿 名 的 , 它 們 的 Scope 一 般 是prototype。

30. 在 Spring 中 如 何 注 入 一 個 java 集 合 ?
Spring 提 供 以 下 幾 種 集 合 的 配 置 元 素 :
 類 型 用 於 注 入 一 列 值 , 允 許 有 相 同 的 值 。
 類 型 用 於 注 入 一 組 值 , 不 允 許 有 相 同 的 值 。
 類 型 用 於 注 入 一 組 鍵 值 對 , 鍵 和 值 都 可 以 為 任意 類 型 。
 類 型 用 於 注 入 一 組 鍵 值 對 , 鍵 和 值 都 只 能 為String 類 型 。

31. 什 麼 是 bean 裝 配?
裝 配 , 或 bean 裝 配 是 指 在 Spring 容 器 中 把 bean 組 裝到 一 起 , 前 提 是 容 器 需 要 知 道 bean 的 依 賴 關 系 , 如 何通 過 依 賴 注 入 來 把 它 們 裝 配 到 一 起 。

32. 什 麼 是 bean 的 自 動 裝 配 ?
Spring 容 器 能 夠 自 動 裝 配 相 互 合 作 的 bean, 這 意 味 著容 器 不 需 要和配 置 , 能通 過 Bean 工 廠 自 動 處 理 bean 之 間 的 協 作 。

33. 解 釋 不 同 方 式 的 自 動 裝 配 。
有 五 種 自 動 裝 配 的 方 式 , 可 以 用 來 指 導 Spring 容 器 用 自動 裝 配 方 式 來 進 行 依 賴 注 入 。
 no: 默 認 的 方 式 是 不 進 行 自 動 裝 配 , 通 過 顯 式 設 置 ref屬 性 來 進 行 裝 配 。
 byName:通 過 參 數 名 自 動 裝 配 ,Spring 容 器 在 配 置文 件 中 發 現 bean 的 autowire 屬 性 被 設 置 成 byname,之 後 容 器 試 圖 匹 配 、 裝 配 和 該 bean 的 屬 性 具 有 相 同 名字 的 bean。
 byType::通 過 參 數 類 型 自 動 裝 配 ,Spring 容 器 在 配 置文 件 中 發 現 bean 的 autowire 屬 性 被 設 置 成 byType,之 後 容 器 試 圖 匹 配 、 裝 配 和 該 bean 的 屬 性 具 有 相 同 型別 的 bean。 如 果 有 多 個 bean 符 合 條 件 , 則 拋 出 錯 誤 。
 constructor: 這 個 方 式 類 似 於 byType, 但 是 要 提 供給 構 造 器 參 數 , 如 果 沒 有 確 定 的 帶 參 數 的 構 造 器 參 數 型別 , 將 會 拋 出 異 常 。
 autodetect:首 先 嘗 試 使 用 constructor 來 自 動 裝 配 ,如 果 無 法 工 作 , 則 使 用 byType 方 式 。

34.自 動 裝 配 有 哪 些 局 限 性 ?
自 動 裝 配 的 局 限 性 是 :
 重 寫: 你 仍 需 用 和 配 置 來 定 義 依 賴 , 意 味 著 總 要 重 寫 自 動 裝 配 。
 基 本 數 據 類 型: 你 不 能 自 動 裝 配 簡 單 的 屬 性 , 如 基 本 資料 類 型 ,String 字 符 串 , 和 類 。
 模 糊 特 性 :自 動 裝 配 不 如 顯 式 裝 配 精 確 , 如 果 有 可 能 ,建 議 使 用 顯 式 裝 配 。

35. 你 可 以 在 Spring 中 注 入 一 個 null 和 一 個 空 字 符 串嗎 ?
可 以 。
Spring 注 解

36. 什 麼 是 基 於 Java 的 Spring 注 解 配 置? 給 一 些 注 解的 例 子.
基 於 Java 的 配 置 , 允 許 你 在 少 量 的 Java 注 解 的 幫 助下 , 進 行 你 的 大 部 分 Spring 配 置 而 非 通 過 XML 文 件 。以@Configuration 注 解 為 例 , 它 用 來 標 記 類 可 以 當 做一 個 bean 的 定 義 , 被 Spring IOC 容 器 使 用 。 另 一 個 例
子 是@Bean 注 解 , 它 表 示 此 方 法 將 要 返 回 一 個 對 象 , 作為 一 個 bean 注 冊 進 Spring 應 用 上 下 文 。

37. 什 麼 是 基 於 注 解 的 容 器 配 置?
相 對 於 XML 文 件 , 注 解 型 的 配 置 依 賴 於 通 過 字 節 碼 元 資料 裝 配 組 件 , 而 非 尖 括 號 的 聲 明 。
開 發 者 通 過 在 相 應 的 類 , 方 法 或 屬 性 上 使 用 注 解 的 方式 , 直 接 組 件 類 中 進 行 配 置 , 而 不 是 使 用 xml 表 述bean 的 裝 配 關 系 。

38. 怎 樣 開 啟 注 解 裝 配 ?
注 解 裝 配 在 默 認 情 況 下 是 不 開 啟 的 , 為 了 使 用 注 解 裝配 , 我 們 必 須 在 Spring 配 置 文 件 中 配 置元 素 。

39. @Required 注 解
這 個 注 解 表 明 bean 的 屬 性 必 須 在 配 置 的 時 候 設 置 , 透過 一 個 bean 定 義 的 顯 式 的 屬 性 值 或 通 過 自 動 裝 配 , 若@Required 注 解 的 bean 屬 性 未 被 設 置 , 容 器 將 拋 出BeanInitializationException。

40. @Autowired 注 解
@Autowired 注 解 提 供 了 更 細 粒 度 的 控 制 , 包 括 在 何 處以 及 如 何 完 成 自 動 裝 配 。 它 的 用 法 和@Required 一 樣 ,修飾 setter 方 法 、 構 造 器 、 屬 性 或 者 具 有 任 意 名 稱 和/或多 個 參 數 的 PN 方 法 。

41. @Qualifier 注 解
當 有 多 個 相 同 類 型 的 bean 卻 只 有 一 個 需 要 自 動 裝 配時 , 將@Qualifier 注 解 和@Autowire 注 解 結 合 使 用 以消 除 這 種 混 淆 , 指 定 需 要 裝 配 的 確 切 的 bean。Spring 數 據 訪 問

42.在 Spring 框 架 中 如 何 更 有 效 地 使 用 JDBC?
使 用 SpringJDBC 框 架 , 資 源 管 理 和 錯 誤 處 理 的 代 價 都會 被 減 輕 。 所 以 開 發 者 只 需 寫 statements 和 queries從 數 據 存 取 數 據 ,JDBC 也 可 以 在 Spring 框 架 提 供 的 模板 類 的 幫 助 下 更 有 效 地 被 使 用 , 這 個 模 板 叫JdbcTemplate ( 例 子 見 這 裡 here)

43. JdbcTemplate
JdbcTemplate 類 提 供 了 很 多 便 利 的 方 法 解 決 諸 如 把 資料 庫 數 據 轉 變 成 基 本 數 據 類 型 或 對 象 , 執 行 寫 好 的 或 可調 用 的 數 據 庫 操 作 語 句 , 提 供 自 定 義 的 數 據 錯 誤 處 理 。

44. Spring 對 DAO 的 支 持
Spring 對 數 據 訪 問 對 象 (DAO) 的 支 持 旨 在 簡 化 它 和 資料 訪 問 技 術 如 JDBC,Hibernate or JDO 結 合 使 用 。 這使 我 們 可 以 方 便 切 換 持 久 層 。 編 碼 時 也 不 用 擔 心 會 捕 獲每 種 技 術 特 有 的 異 常 。

45. 使 用 Spring 通 過 什 麼 方 式 訪 問 Hibernate?
在 Spring 中 有 兩 種 方 式 訪 問 Hibernate:
 控 制 反 轉 Hibernate Template 和 Callback。
 繼 承 HibernateDAOSupport 提 供 一 個 AOP 攔 截 器 。

46. Spring 支 持 的 ORM
Spring 支 持 以 下 ORM:
 Hibernate
 iBatis
 JPA (Java Persistence API)
 TopLink
 JDO (Java Data Objects)
 OJB

47.如 何 通 過 HibernateDaoSupport 將 Spring 和Hibernate 結 合 起 來 ?
用 Spring 的 SessionFactory 調 用LocalSessionFactory。 集 成 過 程 分 三 步 :
 配 置 the Hibernate SessionFactory。
 繼 承 HibernateDaoSupport 實 現 一 個 DAO。
 在 AOP 支 持 的 事 務 中 裝 配 。

48. Spring 支 持 的 事 務 管 理 類 型
Spring 支 持 兩 種 類 型 的 事 務 管 理 :
 編 程 式 事 務 管 理: 這 意 味 你 通 過 編 程 的 方 式 管 理 事 務 ,給 你 帶 來 極 大 的 靈 活 性 , 但 是 難 維 護 。
 聲 明 式 事 務 管 理 :這 意 味 著 你 可 以 將 業 務 代 碼 和 事 務 管理 分 離 , 你 只 需 用 注 解 和 XML 配 置 來 管 理 事 務 。

49. Spring 框 架 的 事 務 管 理 有 哪 些 優 點 ?
 它 為 不 同 的 事 務 API 如 JTA,JDBC,Hibernate,JPA和 JDO, 提 供 一 個 不 變 的 編 程 模 式 。
 它 為 編 程 式 事 務 管 理 提 供 了 一 套 簡 單 的 API 而 不 是 一 些復 雜 的 事 務 API 如
 它 支 持 聲 明 式 事 務 管 理 。
 它 和 Spring 各 種 數 據 訪 問 抽 象 層 很 好 得 集 成 。

50. 你 更 傾 向 用 那 種 事 務 管 理 類 型 ?
大 多 數 Spring 框 架 的 用 戶 選 擇 聲 明 式 事 務 管 理 , 因 為 它對 應 用 代 碼 的 影 響 最 小 , 因 此 更 符 合 一 個 無 侵 入 的 輕 量級 容 器 的 思 想 。 聲 明 式 事 務 管 理 要 優 於 編 程 式 事 務 管理 , 雖 然 比 編 程 式 事 務 管 理 ( 這 種 方 式 允 許 你 通 過 代 碼控 制 事 務 ) 少 了 一 點 靈 活 性 。

Spring 面 向 切 面 編 程 (AOP)
51. 解 釋 AOP

面 向 切 面 的 編 程 , 或 AOP, 是 一 種 編 程 技 術 , 允 許 程 序模 塊 化 橫 向 切 割 關 注 點 , 或 橫 切 典 型 的 責 任 劃 分 , 如 日誌 和 事 務 管 理 。

52. Aspect 切 面
AOP 核 心 就 是 切 面 , 它 將 多 個 類 的 通 用 行 為 封 裝 成 可 重用 的 模 塊 , 該 模 塊 含 有 一 組 API 提 供 橫 切 功 能 。 比 如 ,一 個 日 志 模 塊 可 以 被 稱 作 日 志 的 AOP 切 面 。 根 據 需 求 的不 同 , 一 個 應 用 程 序 可 以 有 若 幹 切 面 。 在 Spring AOP中 , 切 面 通 過 帶 有@Aspect 注 解 的 類 實 現 。

52. 在 Spring AOP 中 , 關 注 點 和 橫 切 關 注 的 區 別 是 什麼 ?
關 注 點 是 應 用 中 一 個 模 塊 的 行 為 , 一 個 關 注 點 可 能 會 被定 義 成 一 個 我 們 想 實 現 的 一 個 功 能 。
橫 切 關 注 點 是 一 個 關 注 點 , 此 關 注 點 是 整 個 應 用 都 會 使用 的 功 能 , 並 影 響 整 個 應 用 , 比 如 日 志 , 安 全 和 數 據 傳輸 , 幾 乎 應 用 的 每 個 模 塊 都 需 要 的 功 能 。 因 此 這 些 都 屬於 橫 切 關 注 點 。

54. 連 接 點
連 接 點 代 表 一 個 應 用 程 序 的 某 個 位 置 , 在 這 個 位 置 我 們可 以 插 入 一 個 AOP 切 面 , 它 實 際 上 是 個 應 用 程 序 執 行Spring AOP 的 位 置 。

55. 通 知
通 知 是 個 在 方 法 執 行 前 或 執 行 後 要 做 的 動 作 , 實 際 上 是程 序 執 行 時 要 通 過 SpringAOP 框 架 觸 發 的 代 碼 段 。
Spring 切 面 可 以 應 用 五 種 類 型 的 通 知 :
 before: 前 置 通 知 , 在 一 個 方 法 執 行 前 被 調 用 。
 after: 在 方 法 執 行 之 後 調 用 的 通 知 , 無 論 方 法 執 行 是 否成 功 。
 after-returning: 僅 當 方 法 成 功 完 成 後 執 行 的 通 知 。
 after-throwing: 在 方 法 拋 出 異 常 退 出 時 執 行 的 通 知 。
 around: 在 方 法 執 行 之 前 和 之 後 調 用 的 通 知 。

56. 切 點
切 入 點 是 一 個 或 一 組 連 接 點 , 通 知 將 在 這 些 位 置 執 行 。可 以 通 過 表 達 式 或 匹 配 的 方 式 指 明 切 入 點 。

57. 什 麼 是 引 入?
引 入 允 許 我 們 在 已 存 在 的 類 中 增 加 新 的 方 法 和 屬 性 。

58. 什 麼 是 目 標 對 象?
被 一 個 或 者 多 個 切 面 所 通 知 的 對 象 。 它 通 常 是 一 個 代 理對 象 。 也 指 被 通 知 (advised) 對 象 。

59. 什 麼 是 代 理?
代 理 是 通 知 目 標 對 象 後 創 建 的 對 象 。 從 客 戶 端 的 角 度看 , 代 理 對 象 和 目 標 對 象 是 一 樣 的 。

60. 有 幾 種 不 同 類 型 的 自 動 代 理 ?
BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying

61. 什 麼 是 織 入 。 什 麼 是 織 入 應 用 的 不 同 點 ?
織 入 是 將 切 面 和 到 其 他 應 用 類 型 或 對 象 連 接 或 創 建 一 個被 通 知 對 象 的 過 程 。織 入 可 以 在 編 譯 時 , 加 載 時 , 或 運 行 時 完 成 。

62. 解 釋 基 於 XML Schema 方 式 的 切 面 實 現 。
在 這 種 情 況 下 , 切 面 由 常 規 類 以 及 基 於 XML 的 配 置 實現 。

63. 解 釋 基 於 注 解 的 切 面 實 現
在 這 種 情 況 下(基 於@AspectJ 的 實 現), 涉 及 到 的 切 面 宣告 的 風 格 與 帶 有 java5 標 注 的 普 通 java 類 一 致 。

Spring 的 MVC
64. 什 麼 是 Spring 的 MVC 框 架 ?

Spring 配 備 構 建 Web 應 用 的 全 功 能 MVC 框 架 。
Spring 可 以 很 便 捷 地 和 其 他 MVC 框 架 集 成 , 如
Struts,Spring 的 MVC 框 架 用 控 制 反 轉 把 業 務 對 象 和控 制 邏 輯 清 晰 地 隔 離 。 它 也 允 許 以 聲 明 的 方 式 把 請 求 引數 和 業 務 對 象 綁 定 。

65. DispatcherServlet
Spring 的 MVC 框 架 是 圍 繞 DispatcherServlet 來 設 計的 , 它 用 來 處 理 所 有 的 HTTP 請 求 和 響 應 。

66. licationContext
licationContext 繼 承 了 ApplicationContext並 增 加 了 一 些 WEB 應 用 必 備 的 特有 功 能 , 它 不 同 於 一般 的 ApplicationContext , 因 為 它 能 處 理 主 題 , 並 找到 被 關 聯 的 servlet。

67. 什 麼 是 Spring MVC 框 架 的 控 制 器 ?
控 制 器 提 供 一 個 訪 問 應 用 程 序 的 行 為 , 此 行 為 通 常 通 過服 務 接 口 實 現 。 控 制 器 解 析 用 戶 輸 入 並 將 其 轉 換 為 一 個由 視 圖 呈 現 給 用 戶 的 模 型 。Spring 用 一 個 非 常 抽 象 的 方式 實 現 了 一 個 控 制 層 , 允 許 用 戶 創 建 多 種 用 途 的 控 制器 。

68. @Controller 注 解
該 注 解 表 明 該 類 扮 演 控 制 器 的 角 色 ,Spring 不 需 要 你 繼承 任 何 其 他 控 制 器 基 類 或 引 用 Servlet API。

69. @RequestMapping 注 解
該 注 解 是 用 來 映 射 一 個 URL 到 一 個 類 或 一 個 特 定 的 方 處理 法 上 。

基礎篇的整理先到這裡,篇幅有限,下一篇我將把自己整理的spring高階篇的面試題分享給大家~
最後,感謝你的閱讀~

嗨,你好呀,未來的架構師,本文由面試網收集整理並進行編輯釋出,謝謝大家的支援~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2618/viewspace-2825938/,如需轉載,請註明出處,否則將追究法律責任。

相關文章