IOC,全称 Inversion of Control 控制反转。即:原来是否创建对象由用户自己控制,现在由 Spring 容器进行控制,原来由用户创建对象,现在由 Spring 容器创建好对象后,供用户使用。
进一步解释,如:
public class Mammal{
private Dog dog;
private Cat cat;
public Mammal(){
dog=new Dog();
cat =new Cat();
}
}
直接在类的构造函数中新建相应的依赖类。这就好比要装修新房,需要用家具,这个时候,根据通常解决对象依赖关系的做法,我们就会直接打造出需要的家具来。不过,通常都是分工明确的,所以,大多数情况下,我们可以去家具广场将家具买回来,然后根据需要装修布置即可。 不管是直接打造家具(通过new构造对象),还是去家具广场买家具(或许是通过容器 解决直接的依赖耦合),有一个共同点需要我们关注,那就是,我们都是自己主动地去获取依赖的对象!
实际上,IoC就是为了帮助我们避免之前的“大费周折”,而提供了更加轻松简洁的方式。它的反转,就反转在让你从原来的事必躬亲,转变为现在的享受服务。