Instantiate:Spring开始初始化Bean
Populate properties: 值注入,依赖注入
BeanNameAware:如果实现了BeanNameAware接口,将会调用setBeanName方法。(实现BeanNameAware接口的Bean可以获取到自己叫什么名字)
BeanFactoryAware: 如果实现了BeanFactoryAware接口,会调用setBeanFactory()方法,Bean内部可以获取到Spring的Bean工厂。(实现BeanFactoryAware接口的Bean可以获取到工厂,从而动态获取其他Bean,也可以作为辅助类查找指定的Bean)
ApplicationContextAware:如果实现了ApplicationContextAware接口,会调用setApplicationContext()方法,Bean内部便可以获取上下文。(实现ApplicationContextAware接口的Bean可以获取到上下文,从而动态获取其他Bean,可以作为BeanFactory的扩展,最新版,推荐使用它替换BeanFactoryAware接口)
BeanPostProcessor:如果实现了BeanPostProcessor接口,会调postProcessBeforeInitialization()方法。(实现BeanPostProcessor接口的Bean可以Bean实例和名称)
InitializingBean:如果实现了InitializingBean接口,会调afterPropertiesSet()方法。如果有自定义的初始化方法,会调用初始化方法。(实现InitializingBean接口的Bean可以干预初始化方法,此时依赖已经注入完毕了)
BeanPostProcessor:如果实现了BeanPostProcessor接口,会调postProcessAfterInitialization()
方法。(实现BeanPostProcessor接口的Bean可以Bean实例和名称)
初始化完毕
DisposableBean:如果实现了DisposableBean接口,Spring会调用它的destroy()方法,如果有自定义的注销方法,会调用注销方法。(实现DisposableBean接口的Bean可以干预销毁方法,在Bean注销之前做一些清理工作)



