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); } } }