专栏首页IT技能应用「Spring认证」Spring 依赖注入
原创

「Spring认证」Spring 依赖注入

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

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

public class TextEditor {
   private SpellChecker spellChecker;
   
   public TextEditor() {
      spellChecker = new SpellChecker();
   }
}

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

public class TextEditor {
   private SpellChecker spellChecker;
   
   public TextEditor(SpellChecker spellChecker) {
      this.spellChecker = spellChecker;
   }
}

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

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

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

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

不。

依赖注入类型和描述

1

基于构造函数的依赖注入当容器调用带有多个参数的类构造函数时,基于构造函数的 DI 就完成了,每个参数代表对另一个类的依赖。

2

基于 Setter 的依赖注入基于 Setter 的 DI 是通过容器在调用无参数构造函数或无参数静态工厂方法来实例化 bean 后调用 bean 上的 setter 方法来完成的。

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

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring依赖注入

    爱撒谎的男孩
  • Spring-依赖注入

    此外Spring还支持工厂方法注入。 这篇博文我们将了解到不同注入方式的具体配置方法。

    小小工匠
  • spring——依赖注入

    兮动人
  • Spring的依赖注入

    依赖注入是一个重要的知识点,很多大型项目都要用到依赖注入的思想,那么怎么理解依赖注入呢?

    良月柒
  • Spring的依赖注入

    依赖注入(Dependency Injection 简称DI),是Spring的IOC控制反转(Inversion of Control,英文缩写为IOC)模块...

    端碗吹水
  • Spring Bean 依赖注入

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • spring 循环依赖注入

    java404
  • 学习Spring——依赖注入

    前言:   又开始动笔开了“学习Spring”系列的头……   其实一开始写“学习SpringMVC”的几篇文章是出于想系统的了解下Spring以及Spring...

    JackieZheng
  • Spring-03 依赖注入(DI)

    几种作用域中,request、session作用域仅在基于web的应用中使用,只能用在基于web的Spring ApplicationContext环境。

    张小驰出没
  • 【Spring】Spring基础配置-依赖注入

    Spring框架本身有四大原则: 1、使用POJO进行轻量级和最小侵入式开发 2、通过依赖注入和基于接口编程实现松耦合 3、通过AOP和默认习惯进行...

    谙忆
  • Spring认证-Spring注入集合

    您已经了解了如何使用值属性配置原始数据类型,并使用Bean 配置文件中的 <property> 标记的ref属性配置对象引用。这两种情况都涉及将奇异值传递给 b...

    IT胶囊
  • spring框架(1)— 依赖注入

    Mister24
  • spring之泛型依赖注入

    说明:所谓泛型依赖注入,就是在父类建立了引用关系,子类继承父类也会建立这种引用关系,并且真正注入的是T对应的子类类型。

    西西嘛呦
  • Spring - 泛型依赖注入(9)

    桑鱼
  • java之spring之依赖注入

    1.普通属性(String 和 基本数据类型),直接通过 property 设置即可

    Vincent-yuan
  • 07 Spring框架 依赖注入(四)基于注解的依赖注入

    前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Sprin...

    MindMrWang
  • Spring IoC依赖注入:Spring提供了哪些依赖注入模式和类型呢?

    Spring 容器最基本最基本的接口就是BeanFactory。BeanFactory负责配置,创建、配置Bean,其中有一个子接口ApplicationCon...

    码农架构
  • Spring详解(三)------DI依赖注入

      上一篇博客我们主要讲解了IOC控制反转,也就是说IOC 让程序员不在关注怎么去创建对象,而是关注与对象创建之后的操作,把对象的创建、初始化、销毁等工作交给s...

    IT可乐
  • 再学习之Spring(依赖注入).

    一、概述     Spring框架是以 简化Java EE应用程序的开发 为目标而创建的。Spring可以实现很多功能,但是这些功能的底层都依赖于它的两个核心特...

    JMCui

扫码关注云+社区

领取腾讯云代金券