Beans.xml里定义的dataSource bean:
通过调试,发现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());