【问题标题】:Spring - dependency injection - testing with different implementationSpring - 依赖注入 - 使用不同实现进行测试
【发布时间】:2017-09-09 14:20:55
【问题描述】:

使用 spring 依赖注入的主要优点之一是使用具有不同实现的相同接口测试功能,无需对代码进行任何更改,即通过将这些不同的实现(依赖)注入配置文件。

让我们举个例子,我们使用基于 java 配置/注释的应用程序开发了我们的应用程序(根本没有 .xml 文件)。

我们已经完成了代码冻结并将代码部署在服务器中。 现在,为了让 QA 团队执行测试,他们需要通过更改配置文件而不接触代码来为接口注入不同的实现。

如果它是一个 .xml 文件,devOps 团队可以通过注入该 bean 名称来注入不同的实现,并可以重新启动服务器。 但是由于我们使用了基于注解/基于java的配置,我们如何实现呢?

提前致谢。

【问题讨论】:

    标签: java spring dependency-injection inversion-of-control


    【解决方案1】:

    使用 spring 依赖注入的主要优点之一是 使用不同的接口测试功能 实施

    Spring 的主要优势之一确实是依赖注入功能。
    但是你也会经常发现只有一个实现的 bean 的情况:

    • 依赖于接口但只有一个实现的 bean。

    • 不依赖于任何接口的 bean,而是您希望将其转换为可注入 bean 的直接类。

    我们已经完成了代码冻结并将代码部署在服务器中。现在 为了让 QA 团队执行测试,他们需要注入不同的 通过更改配置来实现接口 文件而不涉及代码。

    Spring 和更普遍的依赖注入模式/框架并非旨在在不重新打包组件的情况下执行已部署组件的热交换或实现修改。
    在启动时,Spring 会创建其上下文并在其容器中加载应用程序所需的所有 bean。
    如果您想更改某些 bean 的配置,最干净且副作用更少的方法是销毁 spring 上下文/容器,使用所需的更改重新打包应用程序并重新启动它。

    如果是 .xml 文件,QA 团队可以通过以下方式注入不同的实现 注入该 bean 名称并可以重新启动服务器。

    理想情况下,QA 团队应该测试您在 QA 环境中部署的实施,最终用户将使用该实施来保持最接近应用程序的实际功能。
    现在,如果由于某些特定限制,QA 测试的某些组件应该以某种方式模拟/存根,只需为此创建不同的构建。
    Spring Boot Profile 和 Maven Profile 功能可以提供帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2015-03-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2014-10-27
      • 2011-08-04
      相关资源
      最近更新 更多