1. 什麼是SpringIOC
SpringIOC指的是控制反轉,應用程序對象的建立,配置,維護,依賴交給了SpringIOC容器統一進行管理,從而實現鬆耦合。數據庫
2. 說一下SpringIOC的實現原理
使用反射機制+xml技術編程
3. 什麼是SpringAOP
AOP,即面向切面編程。做爲OOP的一種補充技術,傳統的OOP是自傷而下的邏輯開發。而AOP是利用一種橫切技術,將一個項目一刀切下來,剖開封裝的對象內部,並將那些影響了多個類的公共行爲封裝到一個可重用模塊,並將其名爲 「Aspect」 , 即切面。所謂「切面」,簡單地說,就是將那些與業務無關,卻爲業務模塊所共同調用的邏輯或責任封裝起來,便於減小系統的重複代碼,下降模塊間的耦合度,並有利於將來的可操做性和可維護性。可用於權限認證、日誌、事務處理。緩存
4. AOP應用場景
場景一: 記錄日誌
場景二: 監控方法運行時間 (監控性能)
場景三: 權限控制
場景四: 緩存優化 (第一次調用查詢數據庫,將查詢結果放入內存對象, 第二次調用, 直接從內存對象返回,不須要查詢數據庫 )
場景五: 事務管理 (調用方法前開啓事務, 調用方法後提交關閉事務 )函數
5. AOP的實現原理
Spring中AOP的有兩種實現方式:
一、JDK動態代理 :經過接口建立動態類的實例,而不能對類建立動態代理,須要得到目標類的接口信息,生成一個實現了代理接口的動態代理類,再經過反射機制得到動態代理類的構造函數,利用構造函數實例化動態代理類。再調用具體方法前調用invokeHandel方法來處理。
二、Cglib動態代理:是一個代碼生成的類庫,能夠在運行時動態的生成指定類的一個子類對象,並覆蓋其中特定方法並添加加強代碼,從而實現AOP。CGLIB是經過繼承的方式作的動態代理,所以若是某個類被標記爲final,那麼它是沒法使用CGLIB作動態代理的。性能