依赖注入如何在Spring中工作?

问题描述 投票:16回答:2

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

Updates:

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

java spring dependency-injection
2个回答
10
投票

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


15
投票

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

如果类A使用类B作为变量,则类A对类B具有依赖性。

如果使用依赖注入,则通过类A的构造函数将类B赋予类A - 然后将其称为构造注入;或者通过setter - 这被称为setter注入

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

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

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

Spring通过提供提供配置和管理对创建对象的引用的标准方法,在使用依赖项注入时添加了一些简化。

更多阅读this

EDIT1

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

Aaditi:

Please read 5.4.1 Setter Injection

© www.soinside.com 2019 - 2024. All rights reserved.