1.在AbstractApplicationContext类的refresh()方法的543行,实例化所有的非懒加载的单例
finishBeanFactoryInitialization(beanFactory);
2.finishBeanFactoryInitialization方法的867行beanFactory.preInstantiateSingletons();
3.DefaultListableBeanFactory类的preInstantiateSingletons方法的761行getBean(beanName);
4.AbstractBeanFactory类的197行doGetBean
5.AbstractBeanFactory.class的doGetBean方法的312行
createBean(beanName, mbd, args);
6.AbstractAutowireCapableBeanFactory.class的createBean方法的483行
Object beanInstance = doCreateBean(beanName, mbdToUse, args);
7.AbstractAutowireCapableBeanFactory.class的doCreateBean方法的513行
instanceWrapper = createBeanInstance(beanName, mbd, args);
8.AbstractAutowireCapableBeanFactory.class的createBeanInstance方法的1107行
return instantiateBean(beanName, mbd);
9.AbstractAutowireCapableBeanFactory.class的instantiateBean方法的1155行
beanInstance = getInstantiationStrategy().instantiate(mbd, beanName, parent);
10.SimpleInstantiationStrategy.class的instantiate方法的89行
return BeanUtils.instantiateClass(constructorToUse);
11.BeanUtils.class的instantiateClass方法的142行
return ctor.newInstance(args);
12Constructor.class的newInstance()方法的423行
T inst = (T) ca.newInstance(initargs);
总结:可以看出,实例化bean底层是使用的Java的反射机制