导火线 : 看的别人的博客,实现了一下
参考 : http://www.cnblogs.com/LiaoYunChuan/p/8046030.html
public class UserDao {
public void saveUser(){
System.out.println("保存用户");
}
}
public class UserService {
private UserDao userDao = new UserDao();
public void saveUser(){
this.userDao.saveUser();
}
}
public class TestMain {
public static void main(String[] args) {
UserService userService = new UserService();
userService.saveUser();
}
}
三层代码,如果UserService需要多个dao时,每次都得重新new对象,自己写得麻烦不说,每次创建对象内存表示不开森了
改进之后,将所有dao,service权限限定名放入properties中
Userdao=com.ioc.UserDao
UserService=com.ioc.UserService
//创建一个工厂类加载properties文件
public class BeanFactory {
private static Properties props = new Properties();
static{
InputStream is = BeanFactory.class.getResourceAsStream("/bean.properties");
try {
props.load(is);
} catch (Exception e) {
e.printStackTrace();
}
}
//获得运行时类
public static Object getBean(String name){
String className = props.getProperty(name);
try {
return Class.forName(className);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
然后service中需要dao则直接调用getBean方法了,从而实现了单对象