Spring重要知識點整理
一、IOC(Inversion of Control):控制反轉
(1)Spring Core最核心部分
(2)需要先了解依賴註入(Denpendency Injection)/把底層類作為參數傳遞給上層類,實現上層對下層的“控制”
1.IOC、DI、DL的關系:
2.IOC容器的優勢
(1)避免在各處使用new來創建類,並且可以做到統一維護
(2)創建實例的時候不需要了解其中的細節
3.Spring IOC支持的功能
(1)依賴註入 (2)依賴檢查 (3)自動裝配 (4)支持集合
(5)制定初始化方法和銷毀方法 (6)支持回調方法
二、Spring IOC 容器的核心接口:
1.BeanFactory
(1)提供IOC的配置機制
(2)包含Bean的各種定義,便於實例化Bean
(3)建立Bean之間的依賴關系
(4)Bean生命周期的控制
2.ApplicationContext的功能(繼承多個接口)
(1)Bean Factory:能夠管理、裝配Bean
(2)ResourcePatternResolver:能夠加載資源文件
(3)MessageSource:能夠實現國際化等功能
(4)ApplicationEventPublisher:註冊監聽器,實現監聽機制
3.getBean方法的代碼邏輯
(1)轉化beanName
(2)從緩存中加載實例
(3)實例化Bean
(4)檢測parentBeanFactory
(5)初始化依賴Bean
(6)創建Bean
4.Spring Bean的作用域
(1)Singleton:Spring默認作用域,容器裏擁有唯一的Bean實例
(2)prototype:針對每個getBean請求,容器都會創建一個Bean實例
(3)request:為每個Http請求創建一個Bean實例
(4)session:為每個Session創建一個Bean實例
(5)globalSession:會為每個全局Http Session創建一個Bean實例,該作用域僅對Portlet有效
5.Spring Bean 的生命周期
(1)創建過程:
(2)銷毀過程:a.若實現了DisposableBean接口,則會調用destroy方法
b.若配置了destroy-method屬性,則會調用其配置的銷毀方法
三、AOP
1.AOP的三種織入方式
(1)編譯時織入:需要特殊的編譯器,如AspectJ
(2)類加載時織入:需要特殊的編譯器,如AspectJ和Aspectwerkz
(3)運行時織入:Spring采用的方式,通過動態代理的方式
2.Advice的種類
(1)前置通知(Before) (2)後置通知(AfterReturning) (3)異常通知(AfterThrowing)
(4)最終通知(After) (5)環繞通知(Around)
3.AOP的實現:JdkProxy和Cglib
(1)由AopProxyFactory根據AdvisedSupport對象的配置來決定
(2)默認策略如果目標類是接口,則用JDKProxy來實現,否則用後者
(3)JDKProxy的核心:InvocationHandler接口和Proxy類
(4)Cglib:以繼承方式動態生成目標類的代理
JDKProxy:通過java的內部反射機制實現(反射機制在生成類的過程中比較高效)
Cglib:借助ASM實現(ASM在生成類之後的執行過程中比較高效)
四、Spring事務
(1)ACID
(2)隔離級別
(3)事務傳播
Spring重要知識點整理