我是
方圓
願你三冬暖,願你春不寒
文章目錄
1. SpringIOC圖解
2. SpringIOC支持的功能
依賴注入
自動裝配
- 依賴檢查
- 支持集合
- 指定初始化方法和銷燬方法
- 支持回調方法
3. SpringIOC容器的核心接口
3.1 簡要了解
BeanDefinition
:用來描述Bean定義BeanDefinitionRegistry
:提供向IOC容器註冊BeanDefinition對象的方法
3.2 主要了解
-
BeanFactory
BeanFactory是Spring最核心的接口,是Spring框架的基礎設施,面向的是Spring -
ApplicationContext
Application實現多個接口,面向的是使用Spring框架的開發者
4. IOC中getBean方法的代碼邏輯
- 轉換BeanName
- 從緩存中加載實例
- 實例化Bean
- 檢測parentBeanFactory
- 初始化依賴的Bean
- 創建Bean
5. SpringBean的作用域
Singleton
:Spring的默認作用域,容器裏擁有唯一的Bean實例Prototype
:針對每個getBean的請求,容器都會創建一個新的Bean實例request
:會爲每一個Http請求創建一個Bean實例session
:會爲每一個Session創建一個Bean實例globalSession
:回味每個全局Http Session創建一個Bean實例
6. SpringBean的生命週期
創建過程
銷燬過程
- 若實現了DisposableBean接口,則會調用destory方法
- 若配置了destry-method屬性,則會調用其配置的銷燬方法
7. SpringAOP(面向切面編程,動態代理織入)
- 通用化功能代碼的實現,對應的就是所謂的切面
- 業務功能代碼和切面代碼分開後,架構將變得高內聚、低耦合
- 確保功能的完整性,切面最終會被合併到業務中
7.1 Advice的種類
- Before:前置通知
- AfterReturning:後置通知
- AfterThrowing:異常通知
- After:最終通知
- Around:環繞通知
7.2 AOP的實現:JdkProxy和Cglib
- 由AOP ProxyFactory根據Advised Support對象的配置來決定
- 如果目標類是接口,則使用JdkProxy,否則使用Cglib
7.2.1 JdkProxy
- JDK Proxy核心是
InvocationHandler接口和Proxy類
- JDK Proxy通過Java內置的
反射機制
實現 - 反射機制在
生成類的過程
中比較高效
7.2.2 Cglib
- Cglib以
繼承的方式
動態生成目標類的代理 - Cglib藉助
ASM機制
實現 - ASM在生成類後的
執行過程
比較高效
7.3 代理模式詳解
大家可以看我之前寫過一篇博客
最好理解的代理模式
這篇文章到這裏就完了,感謝您的閱讀,筆者水平有限,歡迎大家賜教