Intellij Idea Intellij:“无法自动连接,存在多个具有@ConditionalOnProperty的”MyType“类型的Bean

cunj1qz1  于 2023-03-07  发布在  其他
关注(0)|答案(1)|浏览(192)

在我的Spring Boot 应用程序中,IntelliJ向我显示了警告Could not autowire. There is more than one bean of 'MyType' type.
实际上有两个bean,但它们是用condition on属性定义的

@Service
@ConditionalOnProperty(name = "features.feature1", havingValue = "true")
public class Bean1 implements SomeInterface{

}

第二个依赖于application.yml中的相同属性,但如果将其设置为false

@Service
@ConditionalOnProperty(name = "features.feature1", havingValue = "false", matchIfMissing = true)
public class Bean2 implements SomeInterface{

}

有没有办法让IntelliJ明白这一点,而不显示警告?项目运行没有问题。

uujelgoq

uujelgoq1#

对我来说,创建一个结合了这些条件的类更简单、更干净,这样我就可以将其用于@ConditionalOnBean

@Configuration
@ConditionalOnProperty(name = "features.feature1", havingValue = "false", matchIfMissing = true)
    public class FeatureIsFalse{
}

然后您可以使用

@Service
@ConditionalOnMissingBean(FeatureIsFalse.class)
public class Bean1 implements SomeInterface{

}

以及

@Service
@ConditionalOnBean(FeatureIsFalse.class)
public class Bean2 implements SomeInterface{

}

如果你觉得管用就告诉我。

相关问题