Java Spring里com.mysql.jdbc.Driver的加载时机

139 阅读1分钟

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());

要获取更多Jerry的原创文章,请关注公众号"汪子熙":