依赖注入是由工厂模式,实现的,简单的代码如下:
//工厂接口:
public interface BeanFactory{
public Object getBean(String name);
}
public class PropertiesBeanFactory implements BeanFactory {
Map beans = new HashMap();
public PropertiesBeanFactory(){
this("beans.properties");
}
public PropertiesBeanFactory(String configurationFile){
//读取配置文件,得到具体DAO的实现类名
try {
Properties props = new Properties();
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(configurationFile));
//根据配置文件,初始化所有的DAO对象
Set set = props.entrySet();
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
Map.Entry entry = (Map.Entry) iterator.next();
String key = (String)entry.getKey(); //DAO的名称
String className = (String)entry.getValue(); //全路径类名
Class clz = Class.forName(className);
Object bean = clz.newInstance(); //预先创建好的DAO对象
beans.put(key, bean); //缓存DAO对象
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Object getBean(String name){
return beans.get(name);
}
}
//调用的方法
BeanFactory factory = PropertiesBeanFactory("beans.xml");
ArticleDao articleDao = factory.getBean("articleDao");