spring-IOC

导火线 : 看的别人的博客,实现了一下

参考 : 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方法了,从而实现了单对象

  

原文地址:https://www.cnblogs.com/liyong888/p/8047029.html