beanfactoryの実質

1588 ワード

1.簡単な例はbeanfactoryの実質を説明する
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の反射メカニズム