「Spring认证」Spring 依赖注入

每个基于 Java 的应用程序都有一些对象,它们协同工作以呈现最终用户所看到的工作应用程序。在编写复杂的 Java 应用程序时,应用程序类应尽可能独立于其他 Java 类,以增加重用这些类的可能性,并在单元测试时独立于其他类进行测试。依赖注入(或有时称为连接)有助于将这些类粘合在一起,同时保持它们的独立性。

假设您有一个具有文本编辑器组件的应用程序,并且您想要提供拼写检查。你的标准代码看起来像这样 -

我们在这里所做的是,在 TextEditor 和 SpellChecker 之间创建一个依赖项。在控制反转的情况下,我们会做这样的事情 -

在这里,TextEditor 不应该担心 SpellChecker 的实现。SpellChecker 将独立实现,并在 TextEditor 实例化时提供给 TextEditor。整个过程由 Spring 框架控制。

在这里,我们从 TextEditor 中删除了完全控制权并将其保留在其他地方(即 XML 配置文件),并且依赖项(即类 SpellChecker)通过Class Constructor注入到类 TextEditor 中。因此,控制流已被依赖注入(DI)“反转”,因为您已经有效地将依赖委托给了某个外部系统。

注入依赖项的第二种方法是通过TextEditor 类的Setter 方法,我们将在其中创建 SpellChecker 实例。此实例将用于调用 setter 方法来初始化 TextEditor 的属性。

因此,DI 存在于两个主要变体中,以下两个子章节将通过示例涵盖它们 -

您可以混合使用基于 Constructor 和 Setter 的 DI,但使用构造函数参数作为强制依赖项和 setter 作为可选依赖项是一个很好的经验法则。

使用 DI 原则,代码更清晰,当对象提供依赖项时,解耦更有效。该对象不查找其依赖项,也不知道依赖项的位置或类,而是由 Spring 框架处理所有事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值