Spring中IOC和DI的概念
2019-01-28 本文已影响4人
叫我不矜持
一.什么是Spring_IOC
IOC(Inversion of Control)控制反转,控制反转不是一种新的技术而是一种设计思想,控制反转指的是创建对象的控制权反转了,以前是创建对象的主动权和创建时机是由自己把控的,该对象的依赖对象也需要手动去创建、注入,现在这个控制权交给了Spring容器,由Spring容器去管理,去创建对象,同时对象之间的依赖关系也没有了,他们都依赖于Spring容器,通过Spring容器去建立他们之间的关系;
二.控制-反转 IOC
控制:对象创建的控制权,控制权之前是交给程序员的,依赖对象的创建,注入,都是交给程序员处理
反转:即由容器来帮忙创建及注入依赖对象,因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取方式被反转了。
控制的什么被反转了?获得依赖对象的方式反转了。
三.依赖注入(Dependency Injection) DI
组件之间的依赖关系由容器在运行期间决定,即由容器动态的将某个依赖关系注入到组件中;
依赖注入的目的不在于为软件系统提供更多的功能,它的主要目的在于提升组件重用的频度,并为软件搭建一个灵活,可扩展的平台,通过依赖注入,我们只需要简单的配置,不需要任何代码就可以指定目标的资源,完成自身的业务逻辑,不需要关心具体的资源来自何处有谁实现;
谁依赖谁:当然是应用程序依赖于IoC容器;
为什么需要依赖:因为应用程序需要IOC容器提供对象需要的外部资源
谁注入了谁:很明显是IOC容器注入了应用程序的某个对象,它所依赖的对象
注入了什么:注入了需要的外部资源(包括对象,常量数据,资源)
图1-1 传统应用程序示意图 图1-2有IoC/DI容器后程序结构示意图