Giriş
Artık Class.ForName()'i çağırmaya gerek yok. JVM driver'ı otomatik olarak yüklüyor. Sebebi ise
Service Provider Interface (SPI) kullanılmasıÖrnek
MySQL sürücüsü şöyledir
public class DriverManager {static {loadInitialDrivers();println("JDBC DriverManager initialized");}private static void loadInitialDrivers() {AccessController.doPrivileged(new PrivilegedAction<Void>() {public Void run() {ServiceLoader<Driver> loadedDrivers = ServiceLoader.load(Driver.class);Iterator<Driver> driversIterator = loadedDrivers.iterator();while(driversIterator.hasNext()) {driversIterator.next();}returnnull;}});}
Dosya ise şöyledir
META-INF/services/java.sql.Driver
Driver ise şöyledir
public class Driver extends NonRegisteringDriver implements java.sql.Driver { public Driver() throws SQLException { } static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } }
Hiç yorum yok:
Yorum Gönder