1. Spring工做機制及爲何要用?
Spring 是一個開源框架,是爲了解決企業應用程序開發複雜性而建立的。Spring既是一個AOP框架,也是一IOC容器。
SpringFramework的組成:Spring AOP,Spring DAO,Spring ORM,Spring Web,Spring Context, Spring Web MVC。
Spring的核心就是IOC和AOP,因此Spring的工做機制簡單的理解也就是IOC和AOP的工做機制。
藉助於Spring AOP,Spring IoC可以很方便的使用到很是健壯、靈活的企業級服務,經過使用IoC可以下降組件之間的耦合度,最終,可以提升類的重用性,利於測試,並且更利於整個產品或系統集成和配置。
2. 說說AOP和IOC的概念以及在spring中是如何應用的?
AOP,Aspect Oriented Program,面向(方面)切面的編程;
IOC,Invert Of Control,控制反轉。
簡單說一下,IOC就是其實就是依賴注入,即用接口編程,在程序中不出現new關鍵字,而是用接口來命名引用,而後經過某種方式把接口的某個實現類的實例注入到引用裏,從而實現接口與具體實現類的鬆耦合。
由容器控制程序之間的關係(經過XML配置),而非傳統實現中的由程序代碼直接操控,(在一個Class對象中引用另外一個Class對象時,咱們一般都是直接經過new contructor)。控制權由應用代碼中轉到了外部容器,控制權的轉移,是所謂的反轉。
AOP方式很相似filter,就是在程序正常的業務流中間像切面同樣插入不少其餘須要執行的代碼,好比登陸時候,在進入登陸頁面前寫入日誌,很經常使用的,尤爲是跟數據庫有關的,或者跟支付有關的程序確定會在每一步前面插入日誌。
面向方面的編程,即 AOP,是一種編程技術,它容許程序員對橫切關注點或橫切典型的職責分界線的行爲(例如日誌和事務管理)進行模塊化。AOP 的核心構造是方面,它將那些影響多個類的行爲封裝到可重用的模塊中。
AOP Advice(AOP通知)分爲:
前置通知 後置通知 異常通知 環繞通知
3. Spring的事物有幾種方式?談談spring事物的隔離級別和傳播行爲?
聲明式事務 使用spring聲明式事務,spring使用AOP來支持聲明式事務,會根據事務屬性,自動在方法調用以前決定是否開啓一個事務,並在方法執行以後決定事務提交或回滾事務。
事務的隔離級別:
數據庫系統提供了4種事務隔離級別,在這4種隔離級別中,Serializable的隔離級別最高,Read Uncommitted的隔離級別最低;
· Read Uncommitted 讀未提交數據;(會出現髒讀)
· Read Committed 讀已提交數據;
· Repeatable Read 可重複讀;
· Serializable 串行化
事務的傳播屬性包括:
· Required 業務方法須要在一個事務中運行,若是一個方法運行時已經處在一個事務中,那麼加入到該事務,不然爲本身建立一個新事務,80%的方法用到該傳播屬性;
· Not-Supported· Requiresnew· Mandatoky· Supports· Never· Nested
1、Spring MVC工做原理
1. 客戶端請求提交到DispatcherServlet
2. 由DispatcherServlet控制器查詢一個或多個HandlerMapping,找處處理請求的Controller
3. DispatcherServlet將請求提交到Controller
4. Controller調用業務邏輯處理後,返回ModelAndView
5. DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
6. 視圖負責將結果顯示到客戶端
2、爲何要用Spring
一、Spring能很好的與各大框架進行集成
二、建立對象時,若是咱們不用spring須要用工廠模式來建立,這個spring至關於工廠模式已經幫咱們作了建立對象的功能(IOC、依賴注入)。
三、在用Hibernate的時候,若是不用spring每次都要寫事務的提交代碼,有了spring能夠經過AOP幫助咱們管理事務
四、面向切面編程(AOP)在要記錄日誌的時候添加一條記錄後須要在數據裏同時添加一條添加成功了或失敗的記錄,那麼就能夠用Spring的Aop來處理,雖然不用Aop也能作可是不用Spring的Aop就會寫不少重複的代碼。程序員
3、請你談談SSH整合
SSH:Struts(表示層)+Hibernate(持久層)+Spring(業務層)
a、Struts
Struts是一個表示層框架,主要做用是界面展現,接收請求,分發請求。
b、Hibernate
Hibernate是一個持久層框架,它只負責與關係數據庫的操做。
c、Spring
Spring是一個業務層框架,是一個整合的框架,可以很好地黏合表示層與持久層。
4、介紹一下Spring的事務管理
事務就是對一系列的數據庫操做(好比插入多條數據)進行統一的提交或回滾操做,若是插入成功,那麼一塊兒成功,若是中間有一條出現異常,那麼回滾以前的全部操做。這樣能夠防止出現髒數據,防止數據庫數據出現問題。
開發中爲了不這種狀況通常都會進行事務管理。Spring中也有本身的事務管理機制,通常是使用TransactionMananger進行管理,能夠經過Spring的注入來完成此功能。
5、什麼是依賴注入,依賴注入的做用是什麼?
IOC是一種思想,它能指導咱們如何設計出鬆耦合、更優良的程序。傳統應用程序都是由咱們在類內部主動建立依賴對象,從而致使類與類之間高耦合,難於測試;有了IOC容器後,把建立和查找依賴對象的控制權交給了容器,由容器進行注入組合對象,因此對象與對象之間是鬆散耦合,這樣也方便測試,利於功能複用,更重要的是使得程序的整個體系結構變得很是靈活
依賴注入的做用:減小類間耦合度,避免用new來建立對象
6、什麼是AOP,AOP的做用是什麼?
AOP,面向切面編程,就是把可重用的功能提取出來,而後將這些通用功能在合適的時候織入到應用程序中,好比事務管理、權限控制、日誌記錄、性能統計等。
AOP的做用
AOP並無幫助咱們解決任何新的問題,它只是提供了一種更好的辦法,可以用更少的工做量來解決現有的一些問題,使得系統更加健壯,可維護性更好。
7、Spring中的BeanFactory與ApplicationContext的做用有哪些?
一、BeanFactory負責讀取bean的配置文件,管理bean的加載、實例化,維護bean之間的依賴關係,負責bean的生命週期。
二、ApplicationContext除了提供上述BeanFactory所能提供的功能以外,還提供了更完整的框架功能:
a. 國際化支持
b. 資源訪問
c. 事件傳遞spring
8、鏈接池
c3p0、dbcp數據庫
9、跨庫事務
Atomikos、jotm編程