spring框架
**
控制反转与依赖注入
**
开门见山,此篇博客将主要来讲讲这个spring框架的IOC与DI
IOC(Inversion Of Control)即控制反转:是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
DI(Dependency Injection)即依赖注入:由容器动态的将某个依赖关系注入到组件之中。
IOC控制反转
简单的说
IOC是将对象的管理(创建、维护、销毁)交给spring管理,在使用对象的时候将对象给使用方。
还看不懂
那先来看这个
People people = new People();
这个我们经常用到,它是我们实例化对象用到的一句
那么我们IOC和这个实例化有什么关系呢?
我们IOC是把对象的管理交给spring容器,那么就是说,
我们不需要自己手动创建这个对象,配置好程序后,
容器帮我们创建这个People对象,我们直接拿来用就行。
因此
相对于原来的编程,IOC编程少了new People();
这么做有什么用呢?
我们知道,OOP思想,要我们达到"高内聚,低耦合"。
IOC把对象的控制权交给容器,由容器进行对象的创建、交付。
这样做之后,对象与对象之间是松散耦合。我们的测试类和People类的依赖关系就会降低。
好处:方便测试、利于功能复用、使得程序的整个体系更加灵活。
那么它是如何将控制权反转的呢?详细步骤<—
DI依赖注入(Dependency Injection)
简单的说
IOC的重点是运行中,动态的向使用者提供需要的对象,这个就是靠DI实现的。
看不懂!!!
我的理解:
没用IOC编程前,我们使用new关键字来创建对象,创建后,那么我们的测试类和这个实体类就产生了依赖,也就是它们存在一种耦合关系。
我们IOC编程就是为了降低这种耦合。所以测试类的需求(需要的外部资源)依赖容器的注入(以参数形式)。这里外部资源指实体类。
所以依赖就不存在与两个类之间,从而达到降低耦合关系的目的。
Spring提供了两种方法来让我们很方便的创造对象
1、配置 2、注解 详细步骤<—
IOC和DI的关系:
从这里我们基本可以得出,这个依赖注入就是控制反转的一种实现方式。
这里IOC和DI的角度不同,IOC是从容器的角度描述,DI是从程序的角度描述。
因此,IOC和DI也可以说是同一件事情的不同描述。
下一篇 》
AOP面向切面