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 }