±×³É ±×·±°Ô ÀÖ±¸³ª ÇÏ°í »ç¿ëÇߴµ¥
¹®¶à ¾Ë¾Æº¸ÀÚ Çؼ
http://devyongsik.tistory.com/294
¿ä Æ÷½ºÆÃÀ» ºÃ°Åµç¿ä.
ÀÌÁ¦¾ß Class.forName, static Å°¿öµå, SPI¿¡ ´ëÇØ Á¶±ÝÀ̳ª¸¶ ÀÌÇØ°¡ °¡³×¿ä.
È®½ÇÇÏ°Ô ÀÌÇØÇغ¸ÀÚ Çؼ ½ÇÁ¦ api declaration º¸¸é¼ µû¶ó°¡ºÃ´Âµ¥....
¾ÆÁ÷Àº ³Ê¹« ¾î·Æ³×¿ä....
±×·¡µµ ¹º°¡ ¿ø¸®¸¦ ±ú¿ìÄ£ ´À³¦!
¾Æ·¡´Â Á¦°¡ Æ÷½ºÆà º¸°í µû¶óÇغ» ¿¹Á¦ÀÔ´Ï´Ù.
//Test.java - Ŭ¶óÀ̾ðÆ®
//================================================================
package com.test;
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
Class.forName("com.test.MyDriver");
Connection connection = DriverManager.getConnection();
}
}
/*Ãâ·Â °á°ú
Driver µî·Ï
MyDriver's Connection return
*/
//================================================================
//Driver.java - JAVA¿¡¼ Á¦°øÇÏ´Â ÀÎÅÍÆäÀ̽º(java.sql)
//================================================================
package com.test;
public interface Driver {
Connection getConnection();
}
//================================================================
//Connection.java - JAVA¿¡¼ Á¦°øÇÏ´Â ÀÎÅÍÆäÀ̽º(java.sql)
//================================================================
package com.test;
public interface Connection {
}
//================================================================
//DriverManager.java - JAVA¿¡¼ Á¦°øÇÏ´Â µå¶óÀ̹ö ¸Å´ÏÀú Ŭ·¡½º(java.sql)
//================================================================
package com.test;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class DriverManager {
private DriverManager() {}
private static final Map<String,Driver> drivers = new ConcurrentHashMap<String,Driver>();
public static final String DEFAULT_DRIVER_NAME = "default";
public static void registerDefaultPrivider(Driver d) {
System.out.println("Driver µî·Ï");
registerDriver(DEFAULT_DRIVER_NAME, d);
}
public static void registerDriver(String name, Driver d) {
drivers.put(name,d);
}
public static Connection getConnection() {
return getConnection(DEFAULT_DRIVER_NAME);
}
public static Connection getConnection(String name) {
Driver d = drivers.get(name);
if(d==null)
throw new IllegalArgumentException();
return d.getConnection();
}
}
//================================================================
//MyDriver.java - µå¶óÀ̹ö ¹ê´õ°¡ Á¦°øÇϴ Ŭ·¡½º(ex: oracle.jdbc.driver.OracleDriver)
//================================================================
package com.test;
public class MyDriver implements Driver {
private static Driver defaultDriver;
static {
defaultDriver = new MyDriver();
com.test.DriverManager.registerDefaultPrivider(defaultDriver);
}
@Override
public Connection getConnection() {
System.out.println("MyDriver's Connection return");
return null;
}
}
//================================================================
Àâ´ã | 1336¸íÀÌ Àоú¾î¿ä. 3.137.171.121