![](https://img-blog.csdnimg.cn/img_convert/c8e42b39652b4a25a1aa31bde7f8e2cc.png)
首先,spring会根据推断构造方法实例化bena(使用的策略模式)有3种是实例化的方式。
第一种:BeanDefinition中添加了Supplier,则调用Supplier来得到对象
第二种:@Bean对应的BeanDefinition有FactoryMethodName 使用FactoryMethod 创建
第三种:使用普通构造函数方式构建
实例化的时机1、容器申请bean时,2、当一个bean依赖另一个bean的时候
实例化完成后,还有一次修改bean定义的机会postProcessMergedBeanDefinition实例化后修改bean定义
填充属性(涉及到循环依赖等问题)通过bean定义找到依赖的对象,进行依赖注入
执行各种aware回调
进行初始化前
调用InitializingBean
调用自己定义的初始化
调用初始化后(动态代理AOP)
使用bean
当容器销毁时,会调用销毁方法,可以使用注解