1. 爲何使用Spring ?前端
1). 方便解耦,簡化開發web
經過Spring提供的IoC容器,能夠將對象之間的依賴關係交由Spring進行控制,避免硬編碼所形成的過分程序耦合。spring
2). AOP編程的支持數據庫
經過Spring提供的AOP功能,方便進行面向切面的編程,如性能監測、事務管理、日誌記錄等。編程
3). 聲明式事務的支持session
4). 方便集成各類優秀框架mvc
5). 下降Java EE API的使用難度app
如對JDBC,JavaMail,遠程調用等提供了簡便封裝框架
2. 什麼是IoC,爲什使用IoC ?jsp
IoC全稱Iversion of Controller,控制反轉。
這概念是說你不用建立對象,而只須要描述它如何被建立。你不在代碼裏直接組裝你的組件和服務,可是要在配置文件裏描述哪些組件須要哪些服務,以後一個容器(IOC容器)負責把他們組裝起來。
它能指導咱們如何設計出鬆耦合、更優良的程序。
3. 什麼是AOP,爲何使用AOP ?
AOP全稱:Aspect-Oriented Programming,面向切面編程。
AOP,面向切面編程,就是把可重用的功能提取出來,而後將這些通用功能在合適的時候織入到應用程序中,好比事務管理、權限控制、日誌記錄、性能統計等。
AOP並無幫助咱們解決任何新的問題,它只是提供了一種更好的辦法,可以用更少的工做量來解決現有的一些問題,使得系統更加健壯,可維護性更好。
4. 什麼是Spring的事務管理?
事務就是對一系列的數據庫操做(好比插入多條數據)進行統一的提交或回滾操做,若是插入成功,那麼一塊兒成功,若是中間有一條出現異常,那麼回滾以前的全部操做。這樣能夠防止出現髒數據,防止數據庫數據出現問題。
開發中爲了不這種狀況通常都會進行事務管理。
Spring的聲明式事務一般是指在配置文件中對事務進行配置聲明,其中包括了不少聲明屬性,它是經過Spring Proxy幫你作代理,本身不用額外的寫代碼,只要在Spring配置文件中聲明便可;一般用在數據庫的操做裏面;
編程式事務就是指經過硬編碼的方式作事務處理,這種處理方式須要寫代碼,事務中的邏輯能夠本身定製;能夠是數據庫的東東,也能夠是其餘的操做。
Spring中也有本身的事務管理機制,通常是使用TransactionMananger進行管理,能夠經過Spring的注入來完成此功能。
5. 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情形下有效。
6. 什麼是Spring的MVC框架?
Spring 配備構建Web 應用的全功能MVC框架。Spring能夠很便捷地和其餘MVC框架集成,如Struts,Spring 的MVC框架用控制反轉把業務對象和控制邏輯清晰地隔離。它也容許以聲明的方式把請求參數和業務對象綁定。
spring mvc是一個基於mvc的web框架。spring mvc是spring框架的一個模塊,springmvc和spring無需經過中間整合層進行整合。
7. 如何啓用註解:
<context:annotation-config/>
若是使用<context:component-scan base-package="com.tgb.web.controller.annotation"> </context:component-scan> 則上面內容能夠省略
8. Spring MVC的請求流程:
第一步:發起請求到前端控制器(DispatcherServlet)
第二步:前端控制器請求HandlerMapping查找Handler能夠根據xml配置、註解進行查找
第三步:處理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器調用處理器適配器去執行Handler
第五步:處理器適配器去執行Handler
第六步:Handler執行完成給適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一個底層對象,包括 Model和view
第八步:前端控制器請求視圖解析器去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp)
第九步:視圖解析器向前端控制器返回View
第十步:前端控制器進行視圖渲染。視圖渲染將模型數據(在ModelAndView對象中)填充到request域
第十一步:前端控制器向用戶響應結果