Spring第三天學習筆記
- IOC容器初始化(續)
-
- BeanDefinition的載入和解析
- BeanDefinition在IOC容器的注冊
- IOC容器的依賴注入
- 容器其他相關特性的設計與實作
-
- ApplicationContext和Bean的初始化及銷毀
- lazy-init屬性和預執行個體化
- FactoryBean的實作
- BeanPostProcessor的實作
- autowiring(自動依賴裝配)的實作
- Bean的依賴檢查
- Bean對IOC容器的感覺
- IOC容器分析小結
IOC容器初始化(續)
BeanDefinition的載入和解析
以DefaultListableBeanFactory為例,IOC容器如何載入

Spring BeanDefinition的解析是在BeanDefinitionParseParserDelegate中完成的
BeanDefinition在IOC容器的注冊
注冊是在DefaultListableBeanFactory中用HashMap來持有載入的BeanDefinition
注冊過程
IOC容器的依賴注入
依賴注入的過程是使用者第一次向IOC容器索要Bean時觸發的。
注入是調用AbstractBeanFactory中的gerBean()方法
spring建立bean的方式一是通過Java的反射功能,一是通過CGLIB。
依賴注入的發生實在BeanWrapper的setPropertyValues()
容器其他相關特性的設計與實作
ApplicationContext和Bean的初始化及銷毀
IOC容器中bean的生命周期
1、Bean執行個體的建立
2、為Bean執行個體設定屬性
3、調用Bean的初始化方法
4、應用可以通過IOC容器使用Bean
5、當容器關閉時,調用Bean的銷毀方法
lazy-init屬性和預執行個體化
DefaultListableBeanFactory這個基本容器的preInstantiateSingletons方法中完成
FactoryBean的實作
類似于抽象工廠模式
BeanPostProcessor的實作
IOC觸發對postProcessBeforeInitialization的調用
autowiring(自動依賴裝配)的實作
使用反射自動查找屬性的類型或者名字,基于屬性的類型或者名字自動比對IOC容器的Bean。
Bean的依賴檢查
在bean定義中設定dependency-check屬性來指定依賴檢查模式即可;有none、simple、object、all四種模式;預設為none。
Bean對IOC容器的感覺
IOC容器分析小結
1、BeanDefinition的定位
2、容器的初始化;初始化入口是refresh()函數