IoC与DI

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IoC与DI相关的知识,希望对你有一定的参考价值。

IoC 控制反转
  

public class PersonServiceBean{
    private PersonDAO personDAO = new PersonDAO();
    public void save(Person person){
    personDAO.save(person);
    }
}

如上代码所示,PersonDAOBean是在应用内部创建及维护的。所谓的控制反转(IoC)就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。控制权可以理解对应用程序运行所需要的Bean的管理(创建和销毁),若将上述代码看成一个应用,那么这个应用运行需要的Bean就是PersonDAOBean。

DI 依赖注入

当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean类可以改成如下:

public class PersonServiceBean{
    private PersonDAO personDAO;
    //通过构造器参数,让容器把创建好的依赖对象
    //注入进PersonServiceBean,也可以使用setter注入。
    public PersonServiceBean(PersonDAO personDAO){
        this.personDAO = personDAO;
    }
    public void save(Person person){
        personDAO.save(person);
    }
}

依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中。

  

以上是关于IoC与DI的主要内容,如果未能解决你的问题,请参考以下文章

Spring IOC容器的初体验

IOC容器和注入方式

Spring回顾

Spring基础知识

理解Spring中的IoC和DI

Spring 两大核心IOC和DI