驱动加载【Class.forName】的背后

本文探讨了数据库驱动的工作原理,聚焦于MySQL驱动8.0.13。通过`Class.forName`加载类时,会执行静态块。重点在于驱动加载过程中,如何将DriverInfo对象放入registeredDrivers列表。随后,数据源获取时,根据已注册的驱动连接数据库。总结思路为:驱动加载到列表,然后从列表获取连接。
摘要由CSDN通过智能技术生成

本篇我们来聊聊数据库驱动是如何工作的

下面我们以mysql驱动8.0.13来讲述

先来看看驱动的加载

 Class.forName("com.mysql.cj.jdbc.Driver");

相信这一段代码大家都很熟悉,加载一个类,那它做了什么呢?

大家都知道加载一个类,会执行他的静态块的,如果你问为什么?

public static Class<?> forName(String className)
            throws ClassNotFoundException {
   
    Class<?> caller = Reflection.getCallerClass();
    return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}

重点就是true指明了类加载时执行静态块。

好,那么com.mysql.cj.jdbc.Driver这个类静态块到底在做什么呢?!

  static {
   
        try {
   
            java.sql.D
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值