跳到主要内容

IoC 容器

ChatGPT-4o-mini 中英对照 The IoC Container

本章涵盖了 Spring 的控制反转 (IoC) 容器。

章节摘要

📄️ Spring IoC 容器和 Bean 的介绍

本章涵盖了 Spring Framework 对控制反转 (IoC) 原则的实现。依赖注入 (DI) 是 IoC 的一种专门形式,在这种形式中,对象仅通过构造函数参数、工厂方法的参数或在对象实例构造后或从工厂方法返回后设置的属性来定义它们的依赖关系(即它们所依赖的其他对象)。然后,IoC 容器在创建 bean 时注入这些依赖关系。这个过程从根本上是 bean 本身通过直接构造类或使用服务定位器模式等机制来控制其依赖关系的实例化或位置的逆过程(因此得名,控制反转)。

📄️ 类路径扫描和管理组件

本章中的大多数示例使用 XML 来指定生成每个 BeanDefinition 的配置元数据,该 BeanDefinition 存在于 Spring 容器中。前一节(基于注解的容器配置)演示了如何通过源级注解提供大量配置元数据。然而,即使在那些示例中,“基础” bean 定义仍然在 XML 文件中显式定义,而注解仅用于驱动依赖注入。本节描述了一种通过扫描类路径隐式检测候选组件的选项。候选组件是与过滤标准匹配的类,并且在容器中注册了相应的 bean 定义。这消除了使用 XML 进行 bean 注册的必要性。相反,您可以使用注解(例如,@Component)、AspectJ 类型表达式或您自己的自定义过滤标准来选择哪些类在容器中注册了 bean 定义。

📄️ ApplicationContext 的附加功能

如章节介绍中所讨论的,org.springframework.beans.factory 包提供了管理和操作 beans 的基本功能,包括以编程方式进行操作。org.springframework.context 包添加了 ApplicationContext 接口,该接口扩展了 BeanFactory 接口,并扩展了其他接口,以提供更面向应用程序框架风格的附加功能。许多人以完全声明的方式使用 ApplicationContext,甚至不以编程方式创建它,而是依赖于支持类,如 ContextLoader,在 Jakarta EE Web 应用程序的正常启动过程中自动实例化 ApplicationContext。