简而言之, Bean的生命周期可以分为四个阶段:
创建一个空的Bean -> 初始化Bean -> 使用Bean -> 销毁Bean
1, 创建Bean
1.1 解析类得到BeanDefinition
1.2 如果有多个构造方法, 则要推断构造方法
1.3 确定好构造方法后, 进行实例化得到一个对象
2, 初始化Bean
2.1 对对象中的加了@Autowired注解的属性进行属性填充
2.2 回调Aware方法, 比如BeanNameAware, BeanFactoryAware
2.3 调用BeanPostProcessor的初始化前方法
2.4 调用初始化方法
2.5 调用BeanPostProcessor的初始化后的方法, 并进行AOP
2.6 如果当前创建的bean是单例, 则会把bean放入单例池
3, 使用bean
4, 销毁bean
spring容器关闭时, 调用DisposableBean中的destory()方法