package com.itheima.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.itheima.dao.UserDao;
/**
* 引入工厂,用于生成一些对象,为了生成的BeanFactory对象时,
* 不会生成多个对象(因为BeanFactory作为一个工厂,只要有一个它的对象就可以 了),可以引入单例模式
*
* 2.业务层要调用 Dao的什么 样的实现类,可以放入到配置文件
* 3.读取配置文件
* @author wangli
*
*/
public class BeanFactory {
private BeanFactory(){}//私有构造
private static BeanFactory instance = new BeanFactory();
//再提供一个公有的方法
public static BeanFactory getInstance(){
return instance;
}
private static String DAO;//用于存储从bean.properties文件 中读取的值
static{
try {
InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
Properties p = new Properties();
p.load(is);
DAO = p.getProperty("dao");
} catch (Exception e) {
e.printStackTrace();
}
}
public UserDao getUserDaoInstance(){
try {
Class clz = Class.forName(DAO);
return (UserDao)clz.newInstance();//通过反射生成对象 UserDaoMySqlImpl的对象 UserDaoDom4jImpl的对象
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
