成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:JDBC 是如何打破雙親委派模型的?

開發(fā) 前端
在 Java 中,JDBC(Java Database Connectivity)是用于與數(shù)據(jù)庫進(jìn)行交互的標(biāo)準(zhǔn) API。JDBC 并不是直接打破雙親委派模型,而是通過?SPI 機(jī)制加上線程上下文類加載器(Thread.currentThread().getContextClassLoader())的方式,繞過了傳統(tǒng)的類加載委托機(jī)制。

在 Java 中,JDBC(Java Database Connectivity)是用于與數(shù)據(jù)庫進(jìn)行交互的標(biāo)準(zhǔn) API。JDBC 并不是直接打破雙親委派模型,而是通過 SPI 機(jī)制加上線程上下文類加載器(Thread.currentThread().getContextClassLoader())的方式,繞過了傳統(tǒng)的類加載委托機(jī)制。這種設(shè)計(jì)既保留了雙親委派模型的核心優(yōu)勢(shì),又實(shí)現(xiàn)了對(duì)第三方 JDBC 驅(qū)動(dòng)程序的動(dòng)態(tài)加載。

1. JDBC 打破雙親委派模型的緣由

在 Java 中,DriverManager 是 JDBC 的核心類,用于管理 JDBC 驅(qū)動(dòng)程序并建立數(shù)據(jù)庫連接。但是DriverManager 所在的類加載器(擴(kuò)展類加載器或啟動(dòng)類加載器)通常無法直接加載第三方 JDBC 驅(qū)動(dòng)程序(例如 MySQL 的 com.mysql.cj.jdbc.Driver),因?yàn)檫@些驅(qū)動(dòng)程序是由應(yīng)用程序類加載器加載的。

為了能夠加載第三方 JDBC 驅(qū)動(dòng)程序,JDBC 會(huì)使用線程上下文類加載器(Thread.currentThread().getContextClassLoader())來加載驅(qū)動(dòng)程序。線程上下文類加載器是一個(gè)特殊機(jī)制,它允許線程在其上下文中切換類加載器。通過這種方式,JDBC 可以繞過傳統(tǒng)的雙親委派模型,使用特定的類加載器(通常是應(yīng)用程序類加載器)來加載 JDBC 驅(qū)動(dòng)程序。

2. 線程上下文類加載器+SPI 機(jī)制

  • Java 提供了 SPI 機(jī)制來發(fā)現(xiàn)和加載服務(wù)實(shí)現(xiàn)。對(duì)于 JDBC,各個(gè)數(shù)據(jù)庫廠商實(shí)現(xiàn) java.sql.Driver 接口,并將實(shí)現(xiàn)類的全限定名配置在 META - INF/services/java.sql.Driver 文件中。下面是MySQL驅(qū)動(dòng)中的SPI配置和Oracle驅(qū)動(dòng)中的SPI配置

image.pngimage.png

image.pngimage.png

  • 當(dāng)應(yīng)用程序需要使用 JDBC 驅(qū)動(dòng)時(shí),核心類庫中的 DriverManager 類負(fù)責(zé)加載驅(qū)動(dòng)。DriverManager 使用線程上下文類加載器( Thread.currentThread().getContextClassLoader() )來加載 JDBC 驅(qū)動(dòng)實(shí)現(xiàn)類。
  • 線程上下文類加載器通常是應(yīng)用程序類加載器( AppClassLoader ),它可以加載應(yīng)用程序的類路徑下的類,包括各個(gè)數(shù)據(jù)庫廠商提供的 JDBC 驅(qū)動(dòng)實(shí)現(xiàn)類。這就打破了雙親委派模型中類加載器自下而上委派的規(guī)則,因?yàn)樗皇菑膯?dòng)類加載器開始查找驅(qū)動(dòng)類,而是從應(yīng)用程序類加載器開始查找,使得數(shù)據(jù)庫廠商的 JDBC 驅(qū)動(dòng)類能夠被正確加載。

通過這種方式,JDBC 打破了雙親委派模型,允許第三方 JDBC 驅(qū)動(dòng)程序由應(yīng)用程序類加載器加載,而 DriverManager 仍然由擴(kuò)展類加載器加載。

責(zé)任編輯:武曉燕 來源: 玄武后端技術(shù)棧
相關(guān)推薦

2023-02-03 07:24:49

雙親委派模型

2021-01-06 09:51:19

類加載器雙親委派模型

2023-08-04 08:53:42

2023-12-06 12:11:43

類加載器雙親委派模型

2024-02-22 15:36:23

Java內(nèi)存模型線程

2023-10-30 01:02:56

Java類類加載器雙親委派

2024-12-25 15:44:15

2015-08-13 10:29:12

面試面試官

2024-02-04 10:08:34

2024-05-11 15:11:44

系統(tǒng)軟件部署

2021-03-01 08:54:39

開發(fā)雙親委派

2021-04-19 18:56:58

大數(shù)字符串運(yùn)算

2023-02-08 07:04:20

死鎖面試官單元

2024-10-15 10:00:06

2010-08-12 16:28:35

面試官

2023-12-19 09:24:22

LinuxBIOSUEFI

2021-09-07 10:44:33

Java 注解開發(fā)

2021-09-27 07:11:18

MySQLACID特性

2025-02-26 12:19:52

2025-03-10 11:48:22

項(xiàng)目服務(wù)設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人免费观看男女羞羞视频 | 久久视频精品在线 | 日韩在线免费视频 | 亚洲精品乱码久久久久久蜜桃91 | 国产内谢 | 久久亚洲视频 | 欧美日韩国产高清 | 久久久久久久久久久成人 | 久久久精品视频一区二区三区 | 一区二区三区在线免费 | 99影视 | 精品国产乱码一区二区三区 | 精品一二三区视频 | 一区二区精品 | 日韩免费视频 | 精品久久久久久久人人人人传媒 | 日日干干 | 少妇特黄a一区二区三区88av | 中文字幕亚洲欧美 | 国产无人区一区二区三区 | 久久久婷| 国产精品久久久久久久久免费丝袜 | 欧美在线视频二区 | 欧美精选一区二区 | 日本欧美在线 | 国产精品成人国产乱一区 | 欧美男人天堂 | 亚洲成av人片在线观看 | 国产精品一区二区久久 | 久久综合一区 | 欧美久久综合 | 91素人 | 精品一区二区在线观看 | 中文字幕一区在线 | 精品久久一区 | 国产一区视频在线 | 亚洲国产成人精品久久久国产成人一区 | 日韩高清三区 | 精品伊人 | 久久国产一区二区三区 | 国产色网站 |