Spring bean生命周期
1、Spring启动查找并加载需要被Spring管理的Bean,进行Bean的实例化;
2、Bean实例化后,对Bean的引入和值注入到Bean的属性中;
3、如果Bean实现BeanNameAware接口,Spring将Bean的Id传递给setBeanName()方法;
4、如果Bean实现BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;
5、如果Bean实现ApplicationContextAware接口,Spring将调用Bean的setApplicationContext()方法将Bean所在应用上下文引用传入进来;
6、如果Bean实现BeanPostProcessor接口,Spring就将调用postProcessBeforeInitialization()方法;
7、如果Bean实现InitializingBean接口,Spring将调用afterPropertiesSet()方法。类似如果Bean使用init-method声明了初始化方法,该方法也会被调用;
8、如果Bean实现BeanPostProcessor接口,Spring就将调用postProcessAfterInitialization()方法;此时Bean已经准备就绪,可以被应用程序使用了。它们将一直驻留在应用上下文中,直到应用上下文被销毁;
9、如果Bean实现DisposableBean接口,Spring将调用destory()接口方法,同样如果Bean使用了destory-method声明销毁方法,该方法也会被调用。