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

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

下面我们以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、付费专栏及课程。

余额充值