Spring的深入浅出--12.再次深入分析IOC容器底层源码实现流程

分析IOC容器最主要的还是通过观察refresh()方法,在refresh是整个IOC容器的核心

刷新前的预处理工作

  

 

if里面打印的是日志 

 

初始化属性配置

 

进行属性校验

 

保存事件

 

获取bean工厂

 

 

 

 进行BeanFactory的准备工作

 

 

BeanFactory 初始化之后进行的后置处理工作。

 

执行 BeanFactoryPostProcessor;BeanFactoryPostProcessor:beanFactory的后置处理器。在Bean Factory标准化初始化之后执行的

 

继续分析

 

 

 

 

 

按照类型获取所有的postProcessor组件

 

前面所讲的都是对bean factory的初始化处理,接下来分析对bean的处理

注册BeanPostProcessor(Bean的后置处理器)

 

 注意:对于不同接口类型的BeanPostProcessor;在Bean创建前后的执行时机是不一样的

获取所有的BeanPostProcessor

对BeanPostProcessor进行校验 

 

将初始化好的bean放入到beanFactory中

 获取BeanFactory

看容器中是否存在Id为messageSource

如果有赋值给messageSource,如果没有自己创建DelegatingMessageSource;

把创建好的MessageSource注册在容器中,以后获取值的时候,直接可以自动注入MessageSource;

初始化事件派发器

 

获取工厂

 

onRefresh方法:初始化其他特定的beans在具体的context subClasses。

 

 registerListeners():检查那个listener beans 和添加监听器

 将ApplicationEvent多路派发出去

初始化所有剩下的bean

 

初始化所有剩下的单实例

 

具体的初始化操作

 

 其内部初始化基本顺序:

最后一步完成IOC容器的创建工作。

 

总结:

1、Spring容器在启动的时候,先会保存所有注册进来的Bean的定义信息;

     1)xml注册bean;<bean>

     2)注解注册bean:@Service、@Component、@Bean、xxx

2、Spring容器会合适的时机创建这些bean

     1)用到这个bean的时候,利用getBean创建bean;创建好以后保存在容器中;

     2)统一创建剩下所有的bean的时候;finishBeanFactoryInitialization();

3)、后置处理器:beanPostProcessor

     1)、每一个bean创建完成,都会使用各种后置处理器进行处理;来增强bean的功能;

             AutowiredAnnotationBeanpostProcessor:处理自动注入

             AnnotationAwareAspectJAutoProxyCreator:来做AOP功能;

             增强的功能注解:

             AsyncAnnotationBeanPostProcessor

4)、事件驱动模式

ApplicationListener:事件监听;

ApplicationEvenMulticaster:事件派发

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值