`

java JDBC 在应用如何SPI破坏双亲委派

阅读更多

在DriverManager中的有使用ServiceLoader#load()加载JDBC第三方厂商实现类

代码如下:

AccessController.doPrivileged(new PrivilegedAction<Void>() {
            public Void run() {

                ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);
                Iterator<Driver> driversIterator = loadedDrivers.iterator();

                /* Load these drivers, so that they can be instantiated.
                 * It may be the case that the driver class may not be there
                 * i.e. there may be a packaged driver with the service class
                 * as implementation of java.sql.Driver but the actual class
                 * may be missing. In that case a java.util.ServiceConfigurationError
                 * will be thrown at runtime by the VM trying to locate
                 * and load the service.
                 *
                 * Adding a try catch block to catch those runtime errors
                 * if driver not available in classpath but it's
                 * packaged as service and that service is there in classpath.
                 */
                try{
                    while(driversIterator.hasNext()) {
                        driversIterator.next();
                    }
                } catch(Throwable t) {
                // Do nothing
                }
                return null;
            }
        });

 其中ServiceLoader.load(Driver.class)的方法如下:

public static <S> ServiceLoader<S> load(Class<S> service) {
        ClassLoader cl = Thread.currentThread().getContextClassLoader();
        return ServiceLoader.load(service, cl);
    }

 Thread.currentThread().getContextClassLoader()来获取java的根加载器。

 

 

分享到:
评论

相关推荐

    Java SPI 机制(SPI实战+ServiceLoader源码分析+SPI 应用场景+破坏双亲委派)

    1. SPI 机制可以破坏双亲委派,因为 ServiceLoader 可以加载第三方提供者的实现类。 2. 例如,在 JDBC 连接池中,SPI 机制可以加载不同的数据库驱动程序。 Java SPI 机制是一个强大的服务发现机制,广泛应用于许多...

    java jdbc 需要包

    在Java应用程序中,JDBC允许我们执行CRUD(创建、读取、更新和删除)操作,连接管理,以及数据查询。 Spring框架是一个开源的应用程序框架,它简化了Java企业级应用的开发。Spring JDBC模块是Spring框架的一部分,...

    jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系...通过分析和理解这两个源文件,我们可以学习到如何在Java应用程序中使用JDBC进行数据库交互,以及如何设计和实现简单的客户端-服务器通信。

    Java jdbc

    JDBC使得Java开发者能够编写可移植的数据库应用程序,无需针对不同数据库系统编写不同的代码。JDBC的核心是一系列接口和类,它们允许Java程序执行SQL语句、建立和管理数据库连接,以及处理查询结果。 **1. JDBC的...

    Java JDBC规范和用例

    ### Java JDBC规范详解 #### 一、概述与背景 JDBC,即Java Database Connectivity,是Java平台...掌握了JDBC的核心概念和编程技巧,开发者就能够轻松地在多种数据库平台上开发和部署Java应用,满足不同场景下的需求。

    Java类加载及SPI机制.pdf

    而SPI机制则提供了一种通用的方式来扩展Java平台功能,使得Java开发者可以在不修改源码的情况下增强平台或第三方库的功能。在实际开发过程中,深入理解和正确使用这两个机制,对于提升软件的灵活性、可维护性以及可...

    JAVA使用JDBC进行insert操作添加信息到数据库

    JAVA 使用 JDBC 进行 insert 操作添加信息到数据库 一、 JDBC 概述 ...通过使用 JDBC,我们可以在 Java 应用程序中访问和操作数据库,例如 MySQL 等。同时,我们也需要注意关闭资源的重要性,以避免资源泄露。

    Java jdbc操作mysql

    Java JDBC(Java ...总的来说,Java JDBC提供了一套全面的API,使得开发者能够方便地在Java应用中集成MySQL数据库,实现各种复杂的数据库操作。了解并熟练掌握这些知识点,对于任何Java开发者来说都是必备技能。

    完美的java jdbc连接池实例

    总之,这个"完美的Java JDBC连接池实例"提供了灵活、高效的数据源管理方案,无论是在小型应用还是大型企业级系统中,都能显著提升数据库操作的性能,降低资源消耗。同时,其兼容多种数据库的能力使得迁移和扩展变得...

    java jdbc连接sqlserver所需要的jar包

    在Java中连接SQL Server数据库时,你需要一个特定的驱动程序,通常是一个JAR(Java Archive)文件,这个驱动程序使得Java应用程序能够通过JDBC API与SQL Server进行通信。 SQL Server的JDBC驱动主要有两种类型:...

    JAVA Oracle_JDBC

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    JAVA JDBC教程.zip_zip怎么打开

    通过这个JDBC教程,你将掌握如何在Java应用程序中与数据库进行有效交互,无论是在小型项目还是大型企业级应用中,JDBC都是不可或缺的工具。深入理解和熟练运用JDBC,能提升你在数据库编程领域的专业技能。

    jdbc-oracle.rar_JDBC ORACLE_java JDBC orac_java jdbc oracle_jdbc

    JDBC由一系列接口和类组成,它们定义了如何在Java应用程序和数据库之间建立连接、发送SQL语句、处理结果集等功能。主要的步骤包括加载数据库驱动、建立连接、创建Statement或PreparedStatement对象、执行SQL查询以及...

    java -JDBC_Driver 驱动包

    总结来说,"java - JDBC_Driver"驱动包提供了与MySQL、Oracle和Microsoft SQL Server这三大主流数据库系统交互的桥梁,使得Java开发者能够轻松地在应用中实现数据库操作。正确理解和使用这些驱动是Java数据库编程中...

    sqlite数据类型详细介绍+javaJDBC连接sqlite小例子

    使用Java JDBC连接SQLite数据库,首先需要在项目中引入SQLite-JDBC驱动。在Java代码中,通过以下步骤建立连接: 1. 引入JDBC驱动:在项目中添加SQLite-JDBC的依赖,例如,如果你使用Maven,可以在pom.xml文件中添加...

    Java jdbc 测试类

    Java jdbc oracle 测试类

    java jdbc连接Oracle的小例子

    Java JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API,使得Java程序员能够使用SQL语句来访问数据库。本篇将通过一个小型示例,详细介绍如何...

    Java JDBC驱动大全

    在Java应用中,JDBC驱动扮演着桥梁的角色,将Java程序与数据库连接起来,实现数据的查询、插入、更新和删除等操作。 本压缩包“JDBC驱动大集合”包含了针对多个流行数据库系统的JDBC驱动,包括MySQL、Oracle、SQL ...

Global site tag (gtag.js) - Google Analytics