Heim >Datenbank >MySQL-Tutorial >Warum funktionieren einige Java-JDBC-Anwendungen ohne explizite Treiberregistrierung mit „Class.forName()'?
JDBC-Treiberregistrierung in Java: Klärung der Notwendigkeit von Class.forName(JDBC_DRIVER)
Es wurde berichtet, dass Java Version 6 und höher Eliminiert die Notwendigkeit, JDBC-Treiber mithilfe der Methode Class.forName(JDBC_DRIVER) zu registrieren, da diese verwendet wird Systemeigenschaft „jdbc.drivers“. Einige Entwickler sind jedoch auf ein Szenario gestoßen, in dem das Abrufen des Werts von „jdbc.drivers“ null zurückgibt.
Diese Diskrepanz wirft die Frage auf: Warum funktionieren Java-Anwendungen, die JDBC verwenden, ordnungsgemäß, obwohl kein explizit registrierter Treiber vorhanden ist?
Die Antwort liegt in einer in Java 6 und JDBC 4 eingeführten Funktion, die als „Dienstanbieter“ bekannt ist. Dieser Mechanismus ermöglicht es der JVM, beim Start Implementierungen bestimmter Schnittstellen zu erkennen. JDBC-Treiber, die diesem Konzept entsprechen, können automatisch vom DriverManager registriert werden, wodurch Class.forName() praktisch überflüssig wird.
Der Dienstregistrierungsprozess basiert auf dem Vorhandensein eines „Services“-Verzeichnisses in der JAR-Datei des Treibers im META-INF-Verzeichnis. Dieses Verzeichnis muss eine Textdatei enthalten, die die implementierte Schnittstelle (java.sql.Driver für JDBC-Treiber) und die entsprechende implementierende Klasse benennt.
Durch die Einhaltung des Service-Provider-Konzepts können JDBC-Treiber automatisch registriert werden, wodurch die Notwendigkeit expliziter Class.forName()-Aufrufe. Dies gilt jedoch nur für Treiber, die mit dem Dienstanbietermechanismus kompatibel sind.
Das obige ist der detaillierte Inhalt vonWarum funktionieren einige Java-JDBC-Anwendungen ohne explizite Treiberregistrierung mit „Class.forName()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!