• 四个阶段:实例化 -> 属性赋值 -> 初始化 -> 销毁
  • 实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段
    https://www.jianshu.com/p/1dec08d290c1

细说的话,有以下这些过程:
1、创建(调用构造函数)
2、set属性(set方法注入属性)
3、判断是否实现BeanNameAware接口,并调用接口的setBeanName方法
4、判断是否实现BeanFactoryAware接口,并调用接口的setBeanFactory方法
5、判断是否实现ApplicationContextAware接口,并调用接口的setApplicationContext方法
6、判断是否实现BeanPostProcessor接口,并调用接口的postProcessBeforeInitialization方法
7、判断是否实现InitializingBean接口,并调用接口的afterPropertiesSet方法
8、判断是否自定义init方法,并调用
9、判断是否实现BeanPostProcessor接口(同6),并调用接口的postProcessAfterInitialization方法
10、业务代码中Bean对象的使用
11、当容器销毁时,判断是否实现DisposableBean接口,并调用接口的destroy方法
12、判断是否自定义销毁方法,并调用