IOC容器加载过程和Bean的生命周期深度刨析

在这里插入图片描述
首先实例化容器,AnnotationConfigApplicationContext进入该构造方法。然后进入this()方法,这里会默认调用其父类的构造方法会实例化DefaultListableBeanFactory,该类的实现了BeanFactory(Bean工厂)和BeanDefinitionRegistryPostProcessor(注册Bean定义的类),接着初始化一个Bean读取器AnnotatedBeanDefinitionReader,该类做了两件事 注册内置BeanPostProcessor和注册相关的BeanDefinition,接着走register()方法,走完这两步只是把后续需要处理的类准备好了,还没有将配置类解析成Bean定义。接下来最重要了,就是走refresh()方法,(里面十三个方法,学习spring就是学习里面的方法),方法之一:invokeBeanFactoryPostProcesses(beanFactory)(调用Bean工厂的后置处理器),该方法调用Bean工厂的后置处理器将带有类似@Configuration注解的类解析成Bean定义。方法之一:registerBeanPostProcessors(beanFactory)(Bean工厂的后置处理器,ApplicationContext会注册很多处理器Bean的后置处理器就是其中之一)方法之一:finishBeanFactoryInitialization(beanFactory)(实例化剩余的单理Bean)循环所有的Bean定义调用getBean方法实例化Bean,进入该方法:里面涉及到一个概念就是FactoryBean,如果一个类实现了该接口那么getBean返回的实例就是getObject方法返回的实例,如果就想返回该类的实例那么在getBean的时候使用&xx就可以了。然后如下图在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值