不管是依赖注入,还是控制反转,其含义完全相同:当某个Java实例(调用者)需要另一个Java实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。 在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,因此成为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。 不管是依赖注入,还是控制反转,都说明了Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。
Spring的IoC容器在实现控制反转和依赖注入的过程中,可以划分为两个阶段: