实例化(反射创建实例)
初始化
(
给属性赋值:populateBean(beanName, mbd, instanceWrapper);
如果实现了BeanNameAware接口:执行((BeanNameAware) bean).setBeanName(beanName);
如果实现了BeanClassLoaderAware接口:执行((BeanClassLoaderAware) bean).setBeanClassLoader(bcl);
如果实现了BeanFactoryAware接口:((BeanFactoryAware) bean).setBeanFactory(AbstractAutowireCapableBeanFactory.this);

找到所有BeanPostProcessor,逐个执行processor.postProcessBeforeInitialization(result, beanName);
wrappedBean = applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);
processor.postProcessBeforeInitialization(result, beanName);

如果实现了InitializingBean,执行((InitializingBean) bean).afterPropertiesSet();
invokeInitMethods(beanName, wrappedBean, mbd);

如果配置了init-method,执行配置的init-method
invokeCustomInitMethod(beanName, bean, mbd);

找到所有BeanPostProcessor,逐个执行processor.postProcessAfterInitialization(result, beanName);
wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
processor.postProcessAfterInitialization(result, beanName);

如果是单实例BEAN,添加到singletonObjects中
if (newSingleton) {
addSingleton(beanName, singletonObject);
}

如果是销毁Bean,调用destory-method配置的方法

)

相关文章:

  • 2022-01-18
  • 2021-11-20
  • 2021-07-31
  • 2022-12-23
  • 2022-12-23
  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-08
  • 2022-01-04
  • 2021-07-31
  • 2022-02-19
  • 2022-12-23
  • 2022-02-04
  • 2021-09-20
相关资源
相似解决方案