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ÿ