本文主要是介绍Spring BeanFactory.getBean()流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Spring BeanFactory.getBean() 开始
获取Class对象
1. step1: 找到合适的classloader(一般这里是以Thread.currentThread().getContextClassLoader()获得,正如《深入理解JVM虚拟机》所说这其实是一种破坏双亲加载的机制)
step2: 加载bean对应的class文件为Class对象
实例化前的操作(应用未知)
2.InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()
实例化
3.法一:beanfactory.getBean()
法二:找到对应的constructor并进行反射实例化
实例化后的操作(应用未知)
4.InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
@Autowared之类标注的属性注入
5. InstantiationAwareBeanPostProcessor.postProcessPropertyValues() :解析@Autowared之类的属性(需要走BeanFactory.getBean()的流程)
xml配置的属性注入
6. 根据bean属性的类型选择匹配的PropertyEditorÿ
这篇关于Spring BeanFactory.getBean()流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!