Spring Bean生命周期核心方法简化如下
public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactory {
protected Object createBean(String beanName, RootBeanDefinition mbd, Object[] args) throws BeanCreationException {
// 实例化
BeanWrapper instanceWrapper = createBeanInstance(beanName, mbd, args);
// 填充属性值
applyPropertyValues(beanName, mbd, bw, pvs);
// BeanNameAware
invokeAwareMethods(beanName, bean);
// 初始化前置
Object bean = initializeBean(beanName, bean, mbd);
// PostInitialization
bean = applyBeanPostProcessorsAfterInitialization(bean, beanName);
// Destruction
registerDisposableBeanIfNecessary(beanName, bean, mbd);
return bean;
}
protected Object initializeBean(final String beanName, final Object bean, RootBeanDefinition mbd) {
// Custom initialization method
invokeInitMethods(beanName, bean, mbd);
// afterPropertiesSet() method
invokeAwareMethods(beanName, bean);
// Custom post-initialization method
bean = applyBeanPostProcessorsBeforeInitialization(bean, beanName);
return bean;
}
protected void destroyBean(final String beanName, final Object bean) {
// Custom destroy method
invokeCustomDestroyMethod(beanName, bean);
// DisposableBean interface
if (bean instanceof DisposableBean) {
((DisposableBean) bean).destroy();
}
}
}