什么是IOC(控制反转)?
IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。
-
控制:指的是对象创建(实例化、管理)的权力
-
反转:控制权交给外部环境(Spring 框架、IoC 容器)
在Spring框架中,IOC是通过依赖注入(Dependency Injection,DI)来实现的。依赖注入是IOC的一种实现方式,它通过将依赖关系注入到对象中,而不是由对象自己创建或查找依赖关系。这样做可以使得对象更加松散耦合,更易于测试和维护。
什么是依赖注入?
依赖注入(Dependency lnjection,DI)是一种设计模式,用于降低组件之间的耦合度。在依赖注入中,对象不再负责创建或查找它所依赖的其他对象,而是将这些依赖关系通过外部注入进来。这样做的好处是,对象的创建和依赖关系的管理被解耦,使得代码更加灵活、可维护和可测试。
依赖注入可以通过以下几种方式来实现:
-
构造函数注入(Constructor Injection):通过构造函数将依赖项传递给对象。当对象被创建时,依赖项会被注入到对象中。这种方式可以保证对象的依赖关系在创建时就被满足,使得对象在整个生命周期中都能访问到依赖项。
-
Setter方法注入(Setter Injection): 通过Setter方法将依赖项注入到对象中。对象首先使用默认构造函数创建,然后通过Setter方法设置依赖项。这种方式相比构造函数注入更加灵活,因为可以在对象创建后动态地修改依赖项。
-
接口注入(Interface lnjection):通过接口定义依赖注入的方法。这种方式较少使用,因为需要对象实现特定的接口来接收依赖项,增加了代码的耦合度。
在Spring框架中,依赖注入是通过loC容器来实现的。loC容器负责创建对象并管理它们之间的依赖关系,通过注解或配置文件来指定依赖项的注入方式。Spring支持构造函数注入、Setter方法注入和字段注入等多种注入方式,开发者可以根据需求选择合适的方式来实现依赖注入。