ITPub博客

首页 > IT职业 > IT图书 > Spring 基于构造函数的依赖注入

Spring 基于构造函数的依赖注入

IT图书 作者:jmctian 时间:2021-09-09 08:54:26 0 删除 编辑

Spring 基于构造函数的依赖注入

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

接下来,我们将通过示例来理解 Spring 基于构造函数的依赖注入。

示例:

下面的例子显示了一个类 TextEditor,只能用构造函数注入来实现依赖注入。

让我们用 Eclipse IDE 适当地工作,并按照以下步骤创建一个 Spring 应用程序。

步骤 描述
1 创建一个名为 SpringExample 的项目,并在创建的项目中的 src 文件夹下创建包 com.tutorialspoint 。
2 使用 Add External JARs 选项添加必需的 Spring 库,解释见 Spring Hello World Example chapter.
3 在 com.tutorialspoint 包下创建 Java类 TextEditor,SpellChecker 和 MainApp。
4 在 src 文件夹下创建 Beans 的配置文件 Beans.xml 。
5 最后一步是创建所有 Java 文件和 Bean 配置文件的内容并按照如下所示的方法运行应用程序。

这是 TextEditor.java 文件的内容:

package com.tutorialspoint; public class TextEditor {    private SpellChecker spellChecker;    public TextEditor(SpellChecker spellChecker) {       System.out.println("Inside TextEditor constructor." );       this.spellChecker = spellChecker;    }    public void spellCheck() {       spellChecker.checkSpelling();    } }

下面是另一个依赖类文件 SpellChecker.java 的内容:

package com.tutorialspoint; public class SpellChecker {    public SpellChecker(){       System.out.println("Inside SpellChecker constructor." );    }    public void checkSpelling() {       System.out.println("Inside checkSpelling." );    }  }

以下是 MainApp.java 文件的内容:

package com.tutorialspoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp {    public static void main(String[] args) {       ApplicationContext context =               new ClassPathXmlApplicationContext("Beans.xml");       TextEditor te = (TextEditor) context.getBean("textEditor");       te.spellCheck();    } }

下面是配置文件 Beans.xml 的内容,它有基于构造函数注入的配置:

     <!-- Definition for textEditor bean -->                   <!-- Definition for spellChecker bean -->         

当你完成了创建源和 bean 配置文件后,让我们开始运行应用程序。如果你的应用程序运行顺利的话,那么将会输出下述所示消息:

Inside SpellChecker constructor. Inside TextEditor constructor. Inside checkSpelling.


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2963/viewspace-2797930/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-13

  • 博文量
    0
  • 访问量
    429