Spring的生命周期示意图
在百度Spring的生命周期时,看到一篇不错的文章http://www.cnblogs.com/zrtqsk/p/3735273.html,但在仔细阅读源码后,发现作者有些地方笔误:
源码
一.实例化BeanFactoryProcessor实现类
二.执行BeanFactoryProcessor的PostProcessFactory方法
三.实例化BeanPostProcessor实现类
四.实例化InstantiationAwareBeanPostProcessorAdapt实现类
public abstract class InstantiationAwareBeanPostProcessorAdapter implements SmartInstantiationAwareBeanPostProcessor {
public InstantiationAwareBeanPostProcessorAdapter() {
}
@Nullable
public Class<?> predictBeanType(Class<?> beanClass, String beanName) throws BeansException {
return null;
}
@Nullable
public Constructor<?>[] determineCandidateConstructors(Class<?> beanClass, String beanName) throws BeansException {
return null;
}
public Object getEarlyBeanReference(Object bean, String beanName) throws BeansException {
return bean;
}
@Nullable
public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
return null;
}
public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
return true;
}
public PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) throws BeansException {
return null;
}
/** @deprecated */
@Deprecated
public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException {
return pvs;
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
}
五.执行InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation方法
六.执行Bean的构造器
七.执行InstantiationAwareBeanPostProcessor的postProcessPropertyValues
八.为Bean注入属性
九.调用BeanNameAware的setBeanName方法
十.调用BeanFactoryAware的setBeanFactory方法
十一.执行BeanPostProcessor的postProcessBeforeInitialization方法
十二.调用InitializingBean的afterPropertiesSet方法
十二.调用的init-method属性指定的初始化方法
十三.执行beanPostProcessor的postProcessAfterInitialization方法
十四.执行InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation方法
十五.容器初始化成功,执行正常调用后,下面销毁容器
十六.调用DisposableBean的destroy方法
十七.调用的destroy-method属性指定的初始化方法