"Spring 中的 IoC"
IoC 是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。它是 Spring 框架的核心机制之一,通过将对象的创建、装配和生命周期管理交由容器来处理,从而实现了松散耦合和模块化的开发。
IoC 容器是实现 IoC 思想的软件,它提供对象创建、对象装配和对象生命周期管理等功能。IoC 容器的主要特点是:
* 应用程序无需主动 new 对象,而是描述对象应该如何被创建,即被动实例化。
* 应用程序不需要主动装配对象之间的依赖关系,而是描述需要哪个服务,IoC 容器会帮你装配。
* 主动变被动,体现好莱坞法则:别打电话给我们,我们会打给你。
* 体现迪米特法则(最少知识原则):应用程序不知道依赖的具体实现,只知道需要提供某类服务的对象(面向接口编程);并松散耦合,一个对象应当对其他对象有尽可能少的了解,不和陌生人(实现)说话。
使用 IoC/DI 容器开发需要改变的思路是:
* 应用程序不主动创建对象,但要描述创建它们的方式。
* 在应用程序代码中不直接进行服务的装配,但要描述哪一个组件需要哪一项服务,由容器负责将这些装配在一起。
IoC/DI 是一种思想,不是纯实现技术。IoC 是框架共性,只是控制权的转移,转移到框架。因此,不能因为实现了 IoC 就叫 IoC 容器,而一般除了实现了 IoC 外,还具有 DI 功能的才叫 IoC 容器。
在 Spring 框架中,IoC 容器是通过 ApplicationContext 来实现的。ApplicationContext 是 Spring 框架的核心接口,提供了 bean 的创建、装配和生命周期管理等功能。
在使用 IoC/DI 容器时,需要准备的工具包括 Eclipse、JDK、Spring 框架等。构建环境需要在 Eclipse 中新建一个工程,并添加 Spring 框架的 jar 包。
在开发接口时,需要定义一个接口,例如 HelloApi,并实现该接口,例如 HelloImpl。然后,在配置文件中描述 bean 的创建和装配关系。
IoC 是一种让服务消费者不直接依赖于服务提供者的组件设计方式,它可以减少类与类之间的依赖关系,并实现松散耦合和模块化的开发。