JDBC事务2

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

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());   //先执行DriverManager的初始化,再registerDriver方法,静态代码只走一次。
        }
    }

DriverManager类初始化:
static {
        loadInitialDrivers();   //静态代码只走一次
    }
private static void loadInitialDrivers() {
        String drivers;
        try {
            drivers = AccessController.doPrivileged(new PrivilegedAction() {
                public String run() {
                    return System.getProperty("jdbc.drivers");   //null
                }
            });
        }
        AccessController.doPrivileged(new PrivilegedAction() {
            public Void run() {
                ServiceLoader loadedDrivers = ServiceLoader.load(Driver.class);    //loadedDrivers  = java.sql.Driver接口
                Iterator driversIterator = loadedDrivers.iterator();
                try{
                    while(driversIterator.hasNext()) {   //加载META-INF/services/java.sql.Driver,找到mysql-connector-java-5.1.45.jar!/META-INF/services/java.sql.Driver返回[com.mysql.jdbc.Driver, com.mysql.fabric.jdbc.FabricMySQLDriver]
                        driversIterator.next();
//class com.mysql.jdbc.Driver反射出对象时候不会去执行java.sql.DriverManager.registerDriver(new Driver());因为上面已经走了一次,com.mysql.jdbc.Driver此时不在DriverManager的registeredDrivers里面,
com.mysql.jdbc.Driver是在DriverManager静态代码执行完之后通过registerDriver方法加到registeredDrivers里面去的。
//com.mysql.fabric.jdbc.FabricMySQLDriver反射时候去执行java.sql.DriverManager.registerDriver(new Driver());把自己加到DriverManager的registeredDrivers里面。但是DriverManager的静态代码不会执行。因为执行过一次。
                    }
                }
                return null;
            }
        });
    }
public class FabricMySQLDriver extends NonRegisteringDriver implements Driver {
    static {
        try {
            DriverManager.registerDriver(new FabricMySQLDriver());    //静态代码只走一次。
        }
    }
}

Original: https://www.cnblogs.com/yaowen/p/12273232.html
Author: 哈哈呵h
Title: JDBC事务2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546176/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 实例解释NLLLoss损失函数与CrossEntropyLoss损失函数的关系

    在分类问题中常用到交叉熵损失函数 CrossEntropyLoss,有时候还能看到NLLLoss损失,两个损失是有关联的。 1、首先,随机生成一个3 * 3的 tensor,假设 …

    技术杂谈 2023年7月11日
    067
  • Maven打包失败

    [ERROR] /G:/12.Java����/SpringBoot-learning/seckill-demo/src/main/java/com/chenhf/config/U…

    技术杂谈 2023年7月24日
    065
  • 傅里叶级数

    中学时学习了三角函数,下面这类图象天天看也没啥特别感觉,但是对于数学大咖而言就不一样了: 傅里叶大神看到这些图象后,提出了一个重要思想:任何一个周期性的函数,都可以用一系列三角函数…

    技术杂谈 2023年5月31日
    090
  • SkiaSharp常用操作

    SkiaSharp常用操作 屏幕的坐标系原点在屏幕的左上角,水平往右、竖直往下为正。屏幕的坐标横坐标用”x”表示,纵坐标用”y”表示…

    技术杂谈 2023年5月31日
    0111
  • mongdb Atlas

    免费的 512M mongdb 数据库,可直观查看数据,不需要另外安装 Navicat。 登录地址:https://account.mongodb.com/account/logi…

    技术杂谈 2023年5月30日
    080
  • windows环境Apache服务器启动失败的原因

    因为windows环境的apache服务器需要自己编译才行,因此很难找到,也不会标注是32位还是64位的版本,所以可能会忽略系统兼容性这个问题,我试验了一晚上,还是依旧启动失败,今…

    技术杂谈 2023年6月1日
    099
  • 人生苦短,我用python之三

    HTTP协议及Requests库的方法 requests库的主要方法:requests.request()构造一个请求 requests.get()获取HTML网页的主要方法,对应…

    技术杂谈 2023年7月25日
    073
  • 两种树的直径求法

    两遍DFS 优点:方便记录直径的两端点。 缺点:无法除理带负权的树。 树形DP 优点:短,可以处理有负权的树。 缺点:不好记录端点,容易打错。 最初每条路要走两遍,修一条路就可使与…

    技术杂谈 2023年6月21日
    086
  • 谷歌浏览器 跨域遇到的坑 cors 错误(亲测可行)

    解决方案: 方案一:(已论证) 步骤1: 谷歌浏览器 打开 chrome://flags/#block-insecure-private-network-requests步骤2 :…

    技术杂谈 2023年5月31日
    099
  • React算法复杂度优化?

    react树对比是按照层级去对比的, 他会给树编号0,1,2,3,4…. 然后相同的编号进行比较。所以复杂度是n,这个好理解。 关键是传统diff的复杂度是怎么算的?传…

    技术杂谈 2023年5月31日
    093
  • 罗德岛

    自从转行以后就建博了,一直没有动手写内容,今天开始写。 主要记录技术上的积累和项目上的工作感悟。 这里就是罗德岛,就在这里跳。 Original: https://www.cnbl…

    技术杂谈 2023年6月21日
    075
  • 提升git clone速度

    查看github.global.ssl.fastly.Net的ip地址 nslookup github.global.ssl.fastly.Net Original: https:…

    技术杂谈 2023年7月11日
    060
  • 全排列的详细解析

    好久没有更新了,今天来更新一下。今天来说一下关于全排列的问题那么第一个问题,什么是全排列?全排列可以理解为,数学里面的排列组合更简单的说呢,就是,从一到n这n个数有多少种排列情况?…

    技术杂谈 2023年7月23日
    057
  • 【NFC】近距离无线通信概览

    近距离无线通信 (NFC) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接。借助 NFC,您可以在 NFC 标签与 Android 设备之间或者两台 Andro…

    技术杂谈 2023年5月31日
    0101
  • 老生常谈系列之Aop–Aop的经典应用之Spring的事务实现分析(一)

    老生常谈系列之Aop–Aop的经典应用之Spring的事务实现分析(一) 前言 前面的系列文章已经大概讲解了Spring Aop的实现,从AspectJ开始,到Spri…

    技术杂谈 2023年7月25日
    072
  • SPAR19 航班航迹追踪 All In One

    SPAR19 航班航迹追踪 All In One SPAR19 https://www.radarbox.com/data/flights/SPAR19 https://zh.fl…

    技术杂谈 2023年6月1日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球