1. 程式人生 > >關於spring面試題

關於spring面試題

comm 編程) ref str white inside 工廠模式 port 操作

1.spring框架有哪些主要模塊?

  • Spring Core,Spring的核心功能,用IOC容器,解決對象創建以及依賴關系,包含並管理應用對象的配置和生命周期
  • Spring DAO,Spring對jdbc的支持,可使用JdbcTemplate來簡化數據操作
  • Spring ORM,Spring對ORM的支持,提供了對主流的對象映射關系框架的支持。提供了與多個第三方持久層框架的良好整合
  • Spring AOP,切面編程,減少了非業務代碼的重復,降低了模塊之間的耦合。比如:事務管理,日誌,權限驗證
  • Spring Web,Spring對Web模塊的支持.
  • Spring JEE,Spring對JavaEE其他模塊的支持。如EJB,JMS等

2.spring框架用到了哪些設計模式?

  • 單例模式:在Spring配置bean時,一般默認為單例
  • 依賴註入模式:
  • 工廠模式:BeanFactory用來創建對象實例
  • 代理模式:Spring AOP
  • 前端控制器模式:Spring提供了DispatcherServlet對請求進行處理
  • 模板方式模式:減少代碼重復性

3.解釋IOC(控制反轉)、DI(依賴註入)

IOC:把對象的創建、初始化、銷毀交給spring來管理,而不是由程序控制,實現控制反轉。

DI:依賴註入,在Spring創建對象的過程中,將對象依賴屬性通過配置進行註入

DI可以通過setter方法註入(設值註入)、構造器註入和接口註入三種方式來實現。

註意:

1. 使用構造器註入時,先實例化依賴的對象後,才實例化這個對象。而使用set方法時,Spring首先實例化對象,然後才實例化所有依賴的對象。

2. 當設值註入與構造註入同時存在時,先執行設值註入,再執行構造註入。

4.解釋AOP(面向切面編程)

http://www.cnblogs.com/mcahkf/p/9065833.html

5.BeanFactory和ApplicationContext有什麽區別?

  • ApplicationContextBeanFactory的子接口。
  • BeanFactorySpring中最底層的接口,提供了最簡單的容器的功能,只提供了實例化對象和拿對象的功能。而
    ApplicationContextSpring的一個更高級的容器,提供的額外的功能有:國際化的功能、消息發送、響應機制、統一加載資源的功能、強大的事件機制、對Web應用的支持等等。
  • 加載方式的區別:BeanFactory采用的是延遲加載的形式來註入Bean;而ApplicationContext是在Ioc啟動時就一次性創建所有的Bean,好處是可以馬上發現Spring配置文件中的錯誤,壞處是造成浪費。

6.spring配置Bean的方式

  • 基於XML的配置
  • 基於註解的配置
  • 基於Java的配置

6.Bean的作用域

  • singletonSpring IoC容器中只會存在一個共享的Bean實例Singleton作用域是Spring中的缺省作用域
  • prototype每次通過Spring容器獲取prototype定義的bean時,容器都將創建一個新的Bean實例,每個Bean實例都有自己的屬性和狀態
  • request對不同的Http請求則會產生新的Bean,而且該bean僅在當前Http Request內有效。
  • session對不同的Session請求則會產生新的Bean,該bean實例僅在當前Session內有效。
  • global Session在一個全局的Http Session中,容器會返回該Bean的同一個實例,僅在使用portlet context時有效。

7.Spring Bean的生命周期

8.如何在Spring中註入一個Java Collection

Spring提供了以下四種集合類的配置元素:

  • <list> : 該標簽用來裝配可重復的list值。
  • <set> : 該標簽用來裝配沒有重復的set值。
  • <map>: 該標簽可用來註入鍵和值可以為任何類型的鍵值對。
  • <props> : 該標簽支持註入鍵和值都是字符串類型的鍵值對。

8.Spring 事務傳播屬性以及隔離

事務傳播屬性:

  •   PROPAGATION_REQUIRED--支持當前事務,如果當前沒有事務,就新建一個事務。這是最常見的選擇。
  •   PROPAGATION_SUPPORTS--支持當前事務,如果當前沒有事務,就以非事務方式執行。
  •   PROPAGATION_MANDATORY--支持當前事務,如果當前沒有事務,就拋出異常。
  •   PROPAGATION_REQUIRES_NEW--新建事務,如果當前存在事務,把當前事務掛起。
  •   PROPAGATION_NOT_SUPPORTED--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
  •   PROPAGATION_NEVER--以非事務方式執行,如果當前存在事務,則拋出異常。

事務隔離級別:

  •   DEFAULT使用數據庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應
  •   READ_UNCOMMITTED這是事務最低的隔離級別,充許令外一個事務可以看到這個事務未提交的數據。這種隔離級別會產生臟讀,不可重復讀和幻像讀。
  •   READ_COMMITTED保證一個事務修改的數據提交後才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據
  •   REPEATABLE_READ這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重復讀)
  •   SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止臟讀,不可重復讀外,還避免了幻像讀。

· 代理模式:在AOPremoting中被用的比較多。

· 單例模式:在spring配置文件中定義的bean默認為單例模式。

· 模板方法模式:用來解決代碼重復的問題。

· 前端控制器模式:Spring提供了DispatcherServlet來對請求進行分發。

· 依賴註入模式:貫穿於BeanFactory / ApplicationContext接口的核心理念。

· 工廠模式:BeanFactory用來創建對象的實例。

關於spring面試題