Spring
運行原理
Spring
啟動時讀取應用程序提供的
Bean
配置信息,並在
Spring
容器中生成一份相應的Bean
配置注冊表,然后根據這張注冊表實例化
Bean
,裝配好
Bean
之間的依賴關系,為上
層應用提供准備就緒的運行環境。

1.讀取Bean的配置信息(xml中的<bean>,java類中有@Configuration,通過注解@Autowrite)
2.將讀取到的Bean的配置信息放入Spring配置的容器中的Bean定義的注冊表,通過注冊表將Bean實例化到Bean的實現類中,形成依賴注入
3.再將Bean實例放入Spring容器中的Bean的緩存池
4.如果需要,就從SpringIOC中的緩存池中取出
ApplicationContext
Spring
中
IOC
容器分類
Spring
中有兩個主要的容器系列:
1
)實現
BeanFactory
接口的簡單容器;
2
)實現
ApplicationContext
接口的高級容器。
ApplicationContext
容器介紹
ApplicationContext
內部封裝了一個
BeanFactory
對象,來實現對容器的操作,
BeanFactory封裝了
bean
的信息,而
ApplicationContext
通過訪問
BeanFactory
對象獲取
bean
的對象信息
ApplicationContext
也 實 現 了 一 系 列 的
BeanFactory
接 口
(
可 以 說
ApplicationContext
對
BeanFactory
對象實現一種代理
)
。
ApplicationContext
在應用這個
DefaultListableBeanFactory
對象
的基礎上,不僅實現了BeanFactory
接口提供的功能方法,並且黏合了一些面向應用的功能,如資源
/
國際化支持
/
框架事件支持等
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, //繼承於 BeanFactory HierarchicalBeanFactory,//繼承於 BeanFactory MessageSource, // ApplicationEventPublisher,// ResourcePatternResolver //繼承 ResourceLoader, 用於獲取 resource 對象
ClassPathXmlApplicationContext
refresh()
方法

實例化
Bean
工廠
DefaultListableBeanFactory
在
BeanFactory
子類中有一個
DefaultListableBeanFactory
類,它包含了基本
Spirng IoC容器所具有的重要功能,開發時不論是使用
BeanFactory
系列還是
ApplicationContext
系列來
創建容器基本都會使用到
DefaultListableBeanFactory
類,可以這么說,在
spring
中實際上把
它當成默認的
IoC
容器來使用

解析配置文件
XmlBeanDefinitionReader

將
BeanDefiniton
注冊到容器中
Bean
對象的實例化
GetBean