Spring/Spring MVC

Spring/Spring MVC

1.爲何要使用Spring?

Spring提供了IOC技術,容器會幫你管理依賴的對象,從而不須要本身建立和管理依賴對象,更輕鬆的實現程序的解耦。mysql

Spring提供了事務支持,使得事務操做變得根據方便。web

Spring提供了AOP(面向切面編程),這樣能夠更方便的處理某一類問題。spring

更方便的框架集成,Spring能夠很方便的集成其餘框架,好比Mybatis、Hibernate等。sql

2.什麼是AOP?

  AOP是面向切面編程,經過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。數據庫

3.什麼是IOC?

  IOC就是控制反轉,是Spring的核心,對於Spring框架來講,就是由Spring來負責控制對象的生命週期和對象間的關係。編程

  簡單的說,控制指的是當前對象對內部成員的控制權,控制反轉指的是,這種控制權不禁當前對象管理了,由其餘(類,第三方容器)來管理。安全

4.Spring有哪些主要模塊?

Spring core:框架的最基礎部分,提供IOC和依賴注入特性。session

Spring context:構建於core封裝包基礎上的context封裝包,提供了一種框架式的對象訪問方法。多線程

Spring dao:Data Access Object提供了JDBC的抽象層。mvc

Spring web:提供了針對web開發的集成特性,例如文件上傳,利用servlet listeners進行IOC容器初始化和針對web的ApplicationContext。

Spring web mvc:Spring中的MVC封裝包提供了web應用的Model-View-Controller的實現。

5.Spring有哪些經常使用的注入方式?

setter屬性注入。

構造方法注入。

註解方式注入。

6.Spring中bean是線程安全的嗎?

  Spring中的bean默認是單例模式,spring框架並無對單例bean進行多線程的封裝處理。

  實際上大部分時候Spring bean無狀態的(好比dao類),因此某種程度上bean也是安全的,但若是bean有狀態的話(好比view model對象),那就要開發者本身去保證線程安全了,最簡單的就是改變bean的做用域,把singleton變動成prototype,這樣請求bean至關於new bean了,因此就能夠保證線程安全。

  有狀態就是有數據存儲功能。

  無狀態就是不會保存數據。

7.Spring支持幾種bean的做用域?

  Spring支持五種做用域

  • singleton:Spring Ioc容器中只存在一個bean實例,bean以單列模式存在,默認值。
  • prototype:每次從容器調用bean時都會建立一個新的實例,即每次getBean()至關於執行New Bean()操做。
  • Web環境的做用域
  • request:每次http請求都會建立一個bean。
  • session:同一個http session共享一個bean實例。
  • global-session:用於portlet容器,由於每一個portlet有單獨的session,globalsession提供一個全局性的http session。

8.Spring自動裝配bean有哪些方式?

no:默認值,表示沒有自動裝配,應使用顯式bean引用進行裝配。

byName:根據bean的名稱注入對象依賴項。

byType:根據類型注入對象依賴項。

構造函數:經過構造函數來注入依賴項,須要設置大量的參數。

autodetect:容器首先經過構造函數使用autowire裝配,若是不能,則經過byType自動裝配。

9.Spring事務實現方式有哪些?

  有兩種實現方式

  • 聲明式事務:聲明式事務也有兩種實現方式,基於xml配置文件的方式和註解方式(在類上添加@Transaction 註解)。
  • 編碼方式:經過編碼的形式管理和維護事務。

10.說一下Spring的事務隔離?

髒讀:表示一個事務可以讀取另外一個事務中還未提交的數據。

不可重複讀:表示一個事務內,屢次讀取同一數據。

幻讀:表示同一事務內屢次讀取返回的結果集不同。

  Spring有五大事務隔離級別

  • ISOLATION_DEFAULT:默認值,用底層數據庫的設置隔離級別,數據庫設置的是什麼就用什麼。
  • ISOLATION_READ_UNCOMMITTED:未提交讀,最低隔離級別、事務未提交前,就能夠被其餘事務讀取(會出現幻讀、髒讀、不可重複讀)。
  • ISOLAITON_READ_COMMITTED:提交讀,一個事務提交後才能被其餘事務讀取到(會形成幻讀、不可重複讀),sql server的默認級別。
  • ISOLAITON_REPEATABLE_READ:可重複讀,保證屢次讀取同一數據時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的數據(會形成幻讀),mysql的默認級別。
  • ISOLAITON_SERIALIZABLE:序列化,代價最高最可靠的隔離級別,該隔離級別能防止髒讀、不看重複讀、幻讀。

11.說一下Spring MVC運行流程?

  1. Spring mvc將請求發送給DispatcherServlet(前置控制器)。
  2. DispatcherServlet(前置控制器)查詢HandlerMapping(映射控制器),找處處理請求的Controller(處理器)。
  3. DispatcherServlet(前置控制器)再把請求提交到對應的Controller(處理器)。
  4. Controller(處理器)進行業務邏輯處理後,會返回一個ModelAndView(模型和視圖)。
  5. DispatcherServlet(前置控制器)查詢ViewResolver(視圖解析器),找到ModelAndView(模型和視圖)對象指定的視圖對象。
  6. 視圖對象渲染並返回給客戶端。

12.Spring MVC有哪些組件?

前置控制器DispatcherServlet。

映射控制器HandlerMapping。

處理器Controller。

模型和視圖ModelAndView。

視圖解析器ViewResolver。

13.@RequestMapping的做用是什麼?

  將http請求映射到相應的類或者方法上。

14.@Autowired的做用是什麼?

  @Autowired註解它能夠對類成員變量、方法、構造函數進行標註,完成自動裝配的工做,經過@Autowired註解的使用來消除get、set方法。

相關文章
相關標籤/搜索