共计 684 个字符,预计需要花费 2 分钟才能阅读完成。
1. 测试环境搭建:
1. 在 pom 文件中导入 mysql-connector-java 依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2. 搭建测试类
2. DriverManager 初始化流程剖析
2.1 在 static 动态代码块中执行 loadInitialDrivers() 办法
2.2 在 loadInitialDrivers() 办法中执行 ServiceLoader.load(Driver.class) 代码
咱们看他前面又调用了一次 load 办法,在这个 load 办法外面它就会返回咱们在 DriverManager 的 loadInitialDrivers() 办法外面须要的 ServiceLoader 对象
而后会调用 reload 办法去新建一个 LazyIterator 迭代器
2.3 在 loadInitialDrivers() 办法中执行 loadedDrivers.iterator() 获取迭代器
2.4 在 loadInitialDrivers() 办法中执行 driversIterator.hasNext() 来判断是否有实现类
2.4 在 loadInitialDrivers() 办法中执行 driversIterator.next() 办法来获取实现类
2.5 补充:在加载 Driver 实现类时,会触发 static 动态代码块,将 Driver 实现类的对象存入 DriverManager 的 CopyOnWriteArrayList 容器中
正文完