首页 > 其他分享 >IOC容器的加载过程-Bean的生命周期

IOC容器的加载过程-Bean的生命周期

时间:2022-11-17 17:56:29浏览次数:53  
标签:调用 bean Bean 源码 注册 IOC 加载

核心模块部分截图:

 

 

 IOC 源码加载过程:

1. new AnnotationConfigApplicationContext():

 

 

 

 

 

 

 

 

 再看:AnnotationConfigApplicationContext()的无参构造方法:(因为上面有参构造方法调用了 this()):

 

 

 

 

 

 这些后置处理器最终注册成为一个RootBeanDefinition,点进注册内置的后置处理器方法即可看到,这里不展开。

 

 

 可以看到该类实现了BeanFactoryPostProcessor,前一篇文章中我也提到BeanFactoryPostProcessor是Spring的扩展点,可以集成第三方框架、扫描配置类,注解等,功能强大。在这个类中,会解析加了@Configuration的配置类,还会解析@ComponentScan、@ComponentScans注解扫描的包,以及解析@Import等注解。

 

 

 这里有一个扫描器,上篇文章也提到过了, BeanDefinitionScanner,主要是一个类路径下的bean定义扫描器。里面有个很重要的方法,doScan,传参可以接收包的全路径。

 

 

 总结上面三个步骤:(调用this()无参构造进行初始化)

1. new Bean工厂;

2. 定义出Bean定义读取器;

3. 定义出bean扫描器;

注册配置类

见上图第一张源码图,在执行完成this()方法之后,就开始注册我们的配置类了。其本质是通过读取器读取配置类,最后注册成为一个Bean定义。该Bean定义会放入beanDefinitionMap中。

 

 

IOC容器刷新接口 - refresh() 

然后见第一张源码图,就是调用最重要的方法,refresh()方法了。本次主要看下下面两个方法:

invokeBeanFactoryPostProcessors:调用bean工厂的后置处理器

finishBeanFactoryInitialization():

 

 

 

标签:调用,bean,Bean,源码,注册,IOC,加载
From: https://www.cnblogs.com/zhf123/p/16900289.html

相关文章