1 package cn.itcast.usermng.dao; 2 3 import java.io.InputStream; 4 import java.util.Properties; 5 6 /** 7 * 通过配置文件得到dao实现类的名称! 8 * 通过类名称,完成创建类对象!(反射完成的!) 9 * @author cxf 10 * 11 */ 12 public class DaoFactory { 13 private static Properties props = null; 14 static { 15 // 加载配置文件内容到props对象中 16 try { 17 InputStream in = DaoFactory.class 18 .getClassLoader().getResourceAsStream("dao.properties"); 19 props = new Properties(); 20 props.load(in); 21 } catch(Exception e) { 22 throw new RuntimeException(e); 23 } 24 } 25 /** 26 * 返回一个具体UserDao的实现类对象 27 * @return 28 */ 29 public static UserDao getUserDao() { 30 /** 31 * 给出一个配置文件,文件中给出UserDao接口的实现类名称! 32 * 我们这个方法,获取实现类的类名,通过反射完成创建对象! 33 */ 34 /* 35 * 得到dao实现类的名称 36 */ 37 String daoClassName = props.getProperty("cn.itcast.usermng.dao.UserDao"); 38 39 /* 40 * 通过反射来创建实现类的对象 41 */ 42 try { 43 Class clazz = Class.forName(daoClassName); 44 return (UserDao)clazz.newInstance(); 45 } catch(Exception e) { 46 throw new RuntimeException(e); 47 } 48 } 49 }