Spring Ioc

理解的架构图方法

Bean 生命周期。

1.经历Aware把Bean需要的spring组件set给bean

2.BeanPostProccor 的postProcessBeforeInitialization

3. InitializingBean 的afterPropertiesSet

4.init-method

5,BeanPostProccor 的postProcessAfterInitialization

6,DisposableBean 的destroy方法

7.Destroy-Method

核心代码

AbstractApplicationContext -->refresh() 代码

AbstractApplicationContext -->refresh() 核心代码

1.准备BeanFactory

2.添加BeanFactoryPostProcessors bean工厂的后置处理

3.先调用BeanDefinitionRegistryPostProcessor->postProcessBeanDefinitionRegistryfa方法再调用工厂的BeanFactoryPostProcessors->后置处理

4.添加BeanPostProcessors 这里的Bean没有初始化

5.国际化

6.事件广播

7.钩子函数--->初始化特定上下文子类中的其他特殊bean。

8.注册事件监听器

9.实例化所有除懒加载的单例Bean (重点)

10.广播ApplicationContext初始化完成

注:invokeBeanFactoryPostProcessors(beanFactory)  做了多次循环找出BeanDefinitionRegistryPostProcessor对象并执行postProcessBeanDefinitionRegistry方法。找出BeanFactoryPostProcessor对象执行postProcessBeanFactory方法。
其中有一处可以优化内部做了多次循环可以改成一次循环:空间换时间的方案

BeanDefinitionRegistryPostProcessor的作用是把更多的bean注册到spring容器中。dubbo中ServiceAnnotationBeanPostProcessor是它的实现类。猜测:(兼容spring的框架都会有一个BeanDefinitionRegistryPostProcessor的实现类)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容