jdbc获取连接是这么写的,看下代码都干了什么,是如何把驱动类加载到jvm的。

Class.forName是装载一个类并且对其进行实例化的操作。这里mysql驱动com.sql.Driver的静态方法把该驱动类对象注册到DriverManager中了,就是添加到registeredDrivers列表中,后面会再遍历获取已注册的驱动类;

再看DriverManager.getConnection(conUrl, userName, password);这个是jdk自己的实现,可以看到是jre\lib\rt.jar中的类。 我们是没传caller参数的,jdk自己指定使用了线程上下文加载值进行加载,而没有遵守父类委托机制。

这里看到这里使用线程上下文加载器来加载驱动Driver实现类的的。

我理解为什么jdk不直接加载驱动实现类, 首先com.java.sql包是在jre/lib/rt.jar下面,所以他是由根加载器加载的,而驱动类一般不会放到这个目录下面,所以一般根加载器是加载不到的。不得以,他就指定线程上下文加载器(自己的子类加载器)去加载了。就是这么简单的原因,但是这么做打破了自己定下的双亲委托的规范。

jdbc驱动类加载直接指定线程上下文加载器加载相关推荐

  1. JVM类加载理解(线程上下文类加载器、Tomcat类加载器)

    类加载机制概念 Java虚拟机把描述类的class文件加载到内存,对其进行校验.转换解析.初始化等操作,最终得到可以被虚拟机直接使用的java类型,这就是虚拟机的加载机制. 主要有五个步骤: 加载 将 ...

  2. three.js通过CubeTexture加载环境贴图,和RGBELoader加载器加载hdr环境贴图

    一.使用CubeTexture进行环境贴图 1.CubeTexture使用介绍 Three.js中可以通过使用CubeTexture进行环境贴图,CubeTexture需要将6张图片(正面.反面.上下 ...

  3. babylonjs 分部加载模型_17 Babylonjs入门进阶 使用场景加载器加载glTF,OBJ,STL模型...

    Babylon.js内置的模型格式是.babylon,Babylon.js可以不需要其它额外的插件即可加载. 注意:由于你导入的模型可以具有rotationQuaternion的设置,因此再设置rot ...

  4. PE学习(六)第六章 栈与重定位表 实例栈溢出、模拟加载器加载DLL、遍历重定位表

    第六章 栈与重定位表 16bit OS 存在长调用 lcall push cs,ip    相应的iret pop ip, cs  而call/ret only focus ip register 3 ...

  5. C语言多线程教程(pthread)(线程创建pthread_t,指定线程run方法pthread_create,加mutex锁,解锁,伪共享 false sharing【假共享】)

    [C语言]多线程程序入门教程 文章目录 查看pthread_create()函数文档 · Demo1 单线程(创建线程pthread_t .创建线程run方法pthread_create) · Dem ...

  6. java 上下文加载器_【深入理解Java虚拟机 】线程的上下文类加载器

    线程上下文类加载器 线程上下文类加载器( Thread Context ClassLoader) 是从JDK1.2 引入的,类Thread 的getContextClassLoader() 与 set ...

  7. (二)JVM成神路之剖析Java类加载子系统、双亲委派机制及线程上下文类加载器

    引言 上篇<初识Java虚拟机>文章中曾提及到:我们所编写的Java代码经过编译之后,会生成对应的class字节码文件,而在程序启动时会通过类加载子系统将这些字节码文件先装载进内存,然后再 ...

  8. 【ClassLoader】实现自定义类加载器加载指定路径下的Class文件和Jar包

    文章目录 前言 自定义类加载器加载.class文件 自定义类加载器加载jar包文件 前言 在web开发中,一般我们是不需要去自己实现类加载器的,常见的web容器已经帮我们实现了指定路径下的加载,比如我 ...

  9. 问题解决:使用arthas发现JDBC驱动类死锁阻塞问题并加以解决的过程

    文章目录 问题场景 问题环境 问题原因 解决方案 结果 总结 扩展 随缘求赞 问题场景 开发微服务项目的时候,发现数据库链接创建过程中,陷入了阻塞状态.表现形式为:程序输出日志之后,便卡死不动,不再显 ...

最新文章

  1. Matlab实用程序--图形应用-条形图形
  2. idea artifacts_IDEA配置:让你的IDEA有飞一般的感觉
  3. python图像处理专业博客
  4. python区域增长算法_区域增长算法
  5. dvd管理器java,简单DVD管理-java练习题
  6. 5分绩点转4分_工作复盘|因为这5点,4月份目标没完成
  7. IBatisNet + Castle 开发相关文章
  8. listview 不可滑动问题解决
  9. linux把test目录打包,linux复制、压缩打包、解压缩等操作
  10. python基础知识——模块
  11. Bar函数--Matplotlib
  12. 教你怎么学JAVA+Java入门项目(可以收藏)
  13. 深入浅出PHP amp; MySQL,深入浅出 PHP MySQL
  14. 群体智能的发展现状:AI网络安全现状、新一代AI发展现状
  15. 使用搜狗接口对微信公众号爬虫
  16. MPI和OpenMP混合编程计算pi π值
  17. 华为mate30pro和华为p40pro哪个好
  18. 适合于图像处理方向的SCI/EI期刊杂志列表
  19. webrtc进阶-信令篇-之三:信令、stun、turn、ice
  20. nmn有哪些功效,nmn有什么功效,涨知识!

热门文章

  1. 【报告分享】2021中国人才趋势报告.pdf(附下载链接)
  2. 【报告分享】2020年母婴未来消费新趋势报告.pdf(附下载链接)
  3. 【报告分享】2019云安全威胁报告.pdf(附下载链接)
  4. 【问答集锦】联邦学习让隐私保护和海量数据学习兼得!
  5. 语音识别入门:从菜鸟到大佬
  6. 字节跳动高伟豪:端到端深度召回算法
  7. 使用方法_山西硅肥使用方法
  8. 西门子v90伺服说明书_西门子V90伺服驱动器的的EPOS控制模式
  9. python识别简单训练模型_Python-OpenCV —— 物体识别(TrainCascadeClassification)
  10. 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议