首页 > 解决方案 > 有没有办法防止 Spring 中的配置依赖注入?

问题描述

我正在开发一个 Spring 项目,其中单元测试有自己的配置,称为 UnitTestConfig,其中定义了几个类似于主应用程序文件(几乎是副本)的 bean。保持结构完整,我正在对主应用程序服务器代码进行一些更改,但这会在 UnitTestConfig 中引发错误,因为它没有注入所需的 bean。这些 bean 不在单元测试中使用,有没有办法阻止 UnitTestConfig 尝试注入它们?这是一个很大的级联效应,因为 A 注入,B 注入 C,依此类推,它期待所有这些 Bean。有什么方法可以告诉 Spring config 我不想注入这些 bean 或将它们设置为 null 吗?

@Configuration
public class UnitTestConfig {

    @Inject
    private Environment env;

    @Bean
    public A a() {
        return new A();
    }

为了在需要时不注入 A 的字段,我在该字段上添加了一个 @Lazy,它似乎可以工作,但我希望对此进行任何修改都在测试配置方面,而不是修改主应用程序代码只是为了修复测试问题。有什么建议么?

标签: javaspring

解决方案


这称为循环 bean 依赖。有很多方法可以解决这个问题。在构造函数参数中使用 @Lazy 进行注释。而不是构造函数注入器使用setter注入或在application.properties文件中写入spring.main.allow-bean-definition-overriding=true


推荐阅读