通过调试,发现AbstractApplicationContext的finishBeanFactoryInitialization方法执行完之后,INFO: Loaded JDBC driver: com.mysql.jdbc.Driver就打印了出来:
beanFactory.preInstantiateSingletons():DefaultListableBeanFactory里维护了从Beans.xml里成功解析出的bean 定义:Bean实例成功创建后,进入applyMergedBeanDefinitionPostProcessors:一旦populateBean方法执行完毕之后,Loaded JDBC driver:com.mysql.jdbc.Drive的消息就打印出来了:拿到这个bean的四个属性名称:此处将属性对应的值赋上:applyPropertyValues解析出键值对:待设置的属性值为:com.mysql.jdbc.Driver依然是通过反射的方式去设置:待设置值的实例为:org.springframework.jdbc.datasource.DriverManagerDataSource@1356d4d4
在第127行进行加载:Class.forName(driverClassNameToUse, true, ClassUtils.getDefaultClassLoader());