beanfactoryの実質
1.簡単な例はbeanfactoryの実質を説明する
2.キーはObject instance=Class.forName(className).newInstance();
クラス名に基づいてインスタンス化、すなわちjavaの反射メカニズム
package com.qiqi.base;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import java.util.Properties;
public class BeanFactory {
private static Map<String, Object> objectPool = new Hashtable<String, Object>();
static {
Properties config = new Properties();
InputStream in = BeanFactory.class
.getResourceAsStream("beans-config.properties");
if (in == null) {
throw new ExceptionInInitializerError(
"no file:beans-config found error!");
}
try {
config.load(in);
in.close();
Enumeration ids = config.propertyNames();
while (ids.hasMoreElements()) {
String id = (String) ids.nextElement();
String className = config.getProperty(id);
Object instance = Class.forName(className).newInstance();
objectPool.put(id, instance);
}
} catch (Exception e) {
e.printStackTrace();
throw new ExceptionInInitializerError("failed to init bean pools!");
}
}
public static Object getBean(String id) {
return objectPool.get(id);
}
}
2.キーはObject instance=Class.forName(className).newInstance();
クラス名に基づいてインスタンス化、すなわちjavaの反射メカニズム