Springbean的完整生命周期大致如下:
1、 首先实例化 BeanFactoryPostProcessor的实现类,执行它的postProcessorBeanFactory方法;
2、 实例化BeanPostProcessor 的实现类;
3、 实例化 InstantiationAwareBeanPostProcessor的实现类;
4 、 执行 InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation方法;
5 、 执行具体bean的构造方法;
6、 执行InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation方法;
7、 执行InstantiationAwareBeanPostProcessor.postProcessPropertyValues;
8、 执行bean的setter方法;
9 、 执行BeanNameAware.setBeanName();
10、执行BeanClassLoaderAware.setBeanClassLoader();
11、执行BeanFactoryAware.setBeanFactory();
12、执行ResourceLoaderAware.setResourceLoader()
13、执行ApplicationEventPublisherAware.setApplicationEventPublisher()
14、执行MessageSourceAware.setMessageSource()
15、执行ApplicationContextAware.setApplicationContext()
16、执行 BeanPostProcessor.postProcessBeforeInitialization()
17、执行InstantiationAwareBeanPostProcessor.postProcessBeforeInitialization()
18、执行InitializingBean.afterPropertiesSet() 如果xml指定了init-method 再执行init方法
19、BeanPostProcessor.postProcessAfterInitialization()
20、InstantiationAwareBeanPostProcessor.postProcessAfterInitialization()
21、容器关闭执行 DisposableBean.destroy() 如果声明了 destroy-method 则再执行 destroy-method指定的方法。