摘要:還沒接觸源碼的時(shí)候,對(duì)的執(zhí)行過程一頭霧水,不知道他是如何執(zhí)行操作的。它在注冊(cè)之前先檢查是否已經(jīng)注冊(cè),存在的話拋出異常。反之,使用類將驅(qū)動(dòng)注冊(cè)。文件內(nèi)容是實(shí)現(xiàn)類的包名到類名。源碼具體分析,在接下來(lái)的學(xué)習(xí)中將持續(xù)更新。
還沒接觸源碼的時(shí)候,對(duì)jdbc的執(zhí)行過程一頭霧水,不知道他是如何執(zhí)行crud操作的。但是,我在使用的時(shí)候發(fā)現(xiàn)Class.forNmae(Driver).這個(gè)代碼。這時(shí)候我猜想它是使用反射機(jī)制。查看源碼果然是這樣。Driver類通過靜態(tài)代碼塊在Driver類被加載進(jìn)內(nèi)存的時(shí)候執(zhí)行register()方法,將驅(qū)動(dòng)進(jìn)行注冊(cè)。它在注冊(cè)之前先檢查是否已經(jīng)注冊(cè),存在的話拋出異常。反之,使用DriverManager類將驅(qū)動(dòng)注冊(cè)。
PgConnection使用通過DriverManger.getConnection()方法獲得,這其實(shí)時(shí)調(diào)用PGConnection的構(gòu)造方法進(jìn)行初始化,然后調(diào)用Driver類的connect()方法返回實(shí)例。
同理,PgStatement也是在createPgStatemnt方法中對(duì)PgStatement實(shí)例進(jìn)行初始化。具體圖片不在展示,它們都調(diào)用System.getDefaultProperties()方法獲取連接參數(shù),設(shè)置具體的執(zhí)行過程。
jdbc中采用javaSPI機(jī)制,也就是它們給予java.sql包中的接口執(zhí)行具體實(shí)現(xiàn),所謂spi機(jī)制我的理解就是聲明一系列接口,或者說制定好標(biāo)準(zhǔn),然后由具體類去實(shí)現(xiàn)。我猜jdbc的其它數(shù)據(jù)庫(kù)驅(qū)動(dòng)應(yīng)該也是這種模式。在resource的meta-info下有個(gè)service文件夾,里面建立接口的文件,名字是包名到接口名稱。文件內(nèi)容是實(shí)現(xiàn)類的包名到類名。然后,通過serviceloader類進(jìn)行加載,加載后的類進(jìn)行打印得到每一個(gè)實(shí)現(xiàn)類。
源碼具體分析,在接下來(lái)的學(xué)習(xí)中將持續(xù)更新。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71149.html
摘要:本文為有二次開發(fā)需求的同學(xué)準(zhǔn)備,可以修改源碼后編譯運(yùn)行。具體操作即可在端口啟動(dòng)前端服務(wù)。 本文為有thingsboard二次開發(fā)需求的同學(xué)準(zhǔn)備,可以修改源碼后編譯運(yùn)行。 準(zhǔn)備工作 一臺(tái)4Gb內(nèi)存以上的服務(wù)器(官方推薦8Gb以上,但實(shí)測(cè)以下配置即可正常運(yùn)行) showImg(https://segmentfault.com/img/bVbu3eN?w=328&h=86); Centos7...
摘要:本文為有二次開發(fā)需求的同學(xué)準(zhǔn)備,可以修改源碼后編譯運(yùn)行。具體操作即可在端口啟動(dòng)前端服務(wù)。 本文為有thingsboard二次開發(fā)需求的同學(xué)準(zhǔn)備,可以修改源碼后編譯運(yùn)行。 準(zhǔn)備工作 一臺(tái)4Gb內(nèi)存以上的服務(wù)器(官方推薦8Gb以上,但實(shí)測(cè)以下配置即可正常運(yùn)行) showImg(https://segmentfault.com/img/bVbu3eN?w=328&h=86); Centos7...
摘要:本文主要介紹如何連接到數(shù)據(jù)庫(kù)。創(chuàng)建并配置數(shù)據(jù)庫(kù)創(chuàng)建與連接的數(shù)據(jù)庫(kù)用戶登錄角色例如?;蛲ㄟ^命令行確保該用戶擁有連接數(shù)據(jù)庫(kù)以及創(chuàng)建和編輯表的權(quán)限。測(cè)試連接并保存。注意元素必須指定數(shù)據(jù)庫(kù)類型。文件示例啟動(dòng)現(xiàn)在連接到數(shù)據(jù)庫(kù)就配置好了。 本文主要介紹如何連接JIRA到PostgreSQL數(shù)據(jù)庫(kù)。 首先 檢查是否支持你的PostgreSQL版本。請(qǐng)參見支持的平臺(tái)。 如果是轉(zhuǎn)移JIRA到另一臺(tái)服務(wù)...
閱讀 3469·2019-08-30 13:15
閱讀 1405·2019-08-29 18:34
閱讀 833·2019-08-29 15:18
閱讀 3490·2019-08-29 11:21
閱讀 3253·2019-08-29 10:55
閱讀 3707·2019-08-26 10:36
閱讀 1876·2019-08-23 18:37
閱讀 1832·2019-08-23 16:57