天天看點

Beans.xml裡定義的dataSource bean:

Beans.xml裡定義的dataSource bean:

通過調試,發現AbstractApplicationContext的finishBeanFactoryInitialization方法執行完之後,INFO: Loaded JDBC driver: com.mysql.jdbc.Driver就列印了出來:

Beans.xml裡定義的dataSource bean:

beanFactory.preInstantiateSingletons():

Beans.xml裡定義的dataSource bean:
Beans.xml裡定義的dataSource bean:

DefaultListableBeanFactory裡維護了從Beans.xml裡成功解析出的bean 定義:

Beans.xml裡定義的dataSource bean:

Bean執行個體成功建立後,進入applyMergedBeanDefinitionPostProcessors:

Beans.xml裡定義的dataSource bean:

一旦populateBean方法執行完畢之後,Loaded JDBC driver:com.mysql.jdbc.Drive的消息就列印出來了:

Beans.xml裡定義的dataSource bean:

拿到這個bean的四個屬性名稱:

Beans.xml裡定義的dataSource bean:

此處将屬性對應的值賦上:applyPropertyValues

Beans.xml裡定義的dataSource bean:

解析出鍵值對:

Beans.xml裡定義的dataSource bean:
Beans.xml裡定義的dataSource bean:

待設定的屬性值為:com.mysql.jdbc.Driver

Beans.xml裡定義的dataSource bean:

依然是通過反射的方式去設定:

Beans.xml裡定義的dataSource bean:

待設定值的執行個體為:org.springframework.jdbc.datasource.DriverManagerDataSource@1356d4d4

在第127行進行加載:Class.forName(driverClassNameToUse, true, ClassUtils.getDefaultClassLoader());

Beans.xml裡定義的dataSource bean: