
通過調試,發現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());