繁体   English   中英

Spring 中的依赖注入是如何工作的?

[英]How does dependency injection work in Spring?

我想知道spring是如何进行依赖注入的。 我想要使​​用低级逻辑。

更新:

我想知道如何将对象引用注入到构造函数或 setter 方法中,是通过反射还是某些字节码级别。

Java 组件/类应该尽可能独立于其他 Java 类。 这增加了重用这些类并独立于其他类测试它们的可能性(单元测试)。 为了将 Java 组件与其他 Java 组件分离,对某个其他类的依赖应该被注入到它们中,而不是类本身创建/找到这个对象。

如果 A 类使用 B 类作为变量,则 A 类依赖于 B 类。

如果使用依赖注入,则通过类 A 的构造函数将类 B 提供给类 A - 这称为构造注入; 或通过 setter - 这被称为 setter 注入

依赖注入的一般概念称为控制反转。 一个类不应该配置自己,而应该从外部配置。

基于独立类/组件的设计增加了可重用性和测试软件的可能性。 例如,如果类 A 需要 Dao(数据访问对象)来从数据库接收数据,您可以轻松创建另一个模拟数据库连接的测试对象,并将此对象注入 A 以测试 A,而无需实际的数据库连接。

使用标准 Java 可以实现基于依赖注入的软件设计。

Spring 只是通过提供提供配置的标准方法和管理对创建的对象的引用,在使用依赖注入方面进行了一些简化。

欲了解更多,请阅读本文

编辑1

当 Spring 初始化它的上下文时,它会创建所有在 Spring 应用程序 context.xml 文件中定义的 bean。 现在假设您的 Bean A 依赖于 B,那么 B 的 Obj 已经与 Spring 在一起,因为它在 Spring 初始化时已成功创建。 然后 Spring 将在类 A 中搜索 setter 方法并将 B 的 Obj 设置在那里。

编辑2:

请阅读 5.4.1 Setter 注入

依赖项的配置从 XML、注释或 Java DSL (JavaConfig) 中读取。 然后 Spring DI 引擎使用 Java 反射 API 根据来自配置的元数据连接依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM