Skip to content

什么是IoC(控制反转)?

什么是IoC

IoC(Inversion of Control)即控制反转,是一种设计模式,也是 Spring 框架的核心思想之一。

传统的编程方式中,程序员手动创建并维护对象之间的依赖关系。而在 Ioc 中,这种依赖关系的创建和维护被转移到了容器中, 容器负责创建对象、管理对象的生命周期和对象之间的依赖关系。程序员只需要通过配置文件或注解等方式告诉容器需要创建哪些对象以及它们之间的依赖关系,而不需要手动创建对象或维护依赖关系。

这种将对象的创建和依赖关系的维护交给容器的做法,可以让代码更加模块化、可维护性更高、灵活性更强,并且降低了代码的耦合度。

Ioc是如何实现的

Ioc 通过依赖注入(Dependency Injection)实现对象之间的解耦和依赖关系的管理。依赖注入是指在对象创建时,将对象所依赖的其他对象注入到它的属性中。

在 Spring 框架中,Ioc 由 Bean 容器实现。Bean 容器是一个对象工厂,它负责创建对象、维护对象之间的依赖关系和对象的生命周期。 Bean 容器在启动时会读取配置文件或注解,然后根据配置信息创建和初始化对象,这些对象被称为 Bean。在创建 Bean 的过程中,Bean 容器会注入 Bean 所依赖的其他 Bean 实例,这样就可以实现对象之间的解耦和依赖关系的管理。

依赖注入有三种方式:构造方法注入、Setter 方法注入和接口注入。

其中,构造方法注入是将依赖关系通过构造方法传入,Setter 方法注入是通过 Setter 方法设置依赖关系,接口注入是通过接口实现来设置依赖关系。

总之,Ioc 通过 Bean 容器和依赖注入实现了对象之间的解耦和依赖关系的管理,从而使得代码更加模块化、可维护性更高、灵活性更强,并且降低了代码的耦合度。