导火线 : 看的别人的博客,实现了一下
参考 : 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方法了,从而实现了单对象