解决方案 »

  1.   

    你new的话是在方法中通过java代码new的。。
    如果用spring的话会在配置文件中声明对象的以及其依赖关系,用的时候直接注入到我们的类,即使对象之间的依赖关系发生改变,我们也不需要改源代码。
    这就是解耦吧。个人理解。
      

  2.   

    方便进行mock测试
    容器管理对象的lifecycle(比如单例,比如一次Session/Request等)
    暂时想到这些
      

  3.   

    其实这个问题还是面向接口编程的问题。
    如果不用IoC,那么hard code是
    SuperClass obj = new SubClass1(); // 如果你想用另外一个subclass,则需要改代码,然后编译。如果用IoC, 则
    SuperClass obj = (SuperClass)BeanFactory.getBean("beanID"); // // 如果你想用另外一个subclass,不需要改代码,而是改spring的XML配置文件,修改后不需要在次编译。#2楼说的moc数据测试这个时候就很有用了