1、新建两个类:
AccountDaoImpl:
IaccountServiceImpl
2、classpath建立配置文件,由于反射方式建立类对象:
accoutDao=com.fang.dao.Impl.AccountDaoImpl
iaccoutService=com.fang.service.impl.IaccountServiceImpl
3、建立工厂类:
package com.fang.Factory;
import com.fang.service.IaccoutService;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class BeanFactory {
private static Properties p;
private static Map<String,Object> beans ;
static {
try {
p = new Properties();
beans = new HashMap<String, Object>();
InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
p.load(in);
Enumeration keys = p.keys();
while (keys.hasMoreElements()){
String key = keys.nextElement().toString();
String beanPath = p.getProperty(key);
System.out.println(beanPath);
Object object = Class.forName(beanPath).newInstance();
beans.put(key,object);
}
}catch (Exception e){
e.printStackTrace();
}
}
public static Object getBean(String beanName){
return beans.get(beanName);
}
public static void main(String[] args) {
IaccoutService iaccoutService = (IaccoutService) BeanFactory.getBean("iaccoutService");
iaccoutService.saveAccount();
}
}
(1)其中:加载properties不要使用file方式;web功能会出错;使用如下类路径方式
BeanFactory.class.getClassLoader().getResourceAsStream(“bean.properties”);
(2) 在静态块在,使用map创建类实例,采用单例模式