Spring底層源碼分析


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

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM