上图为Bean的构造过程
Bean的生命周期
1.Spring启动,查找并加载需要被Spring管理的Bean,进行实例化;
2.Bean实例化后对Bean的引入和Value值注入到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将调用他们的afterPropertiesSet0方法;如果Bean使用init-method声明了初始化方法,该方法也会被调用;
8.如果Bean实现了BeanPostProcessor接口,Spring将调用postProcessAfterInitialization()方法;
9.最后Bean已经准备就绪,可以被应用程序使用,Bean也将一直存在应用上下文中,直到应用上下文被销毁;
10.如果Bean实现了DisposableBean接口,Spring将调用destory()接口方法,如果Bean使用了destory-method方法声明销毁,该方法也会被调用;