【发布时间】:2020-12-10 02:44:08
【问题描述】:
我的 spring 应用程序中有 2 个配置类。
Configuration 和 AnotherConfiguration。 AnotherConfiguration 的条件是仅在提供特定参数时才创建 bean(这由 ConditionalOnClass 注释处理)。
配置.java
@Configuration
public class Configuration {
@Bean
public Stage testStage() {
return someStage1;
}
@Bean
public Stage testStage2() {
return someStage2;
}
}
另一个配置.java
@Configuration
@ConditionalOnClass()
public class AnotherConfiguration {
@Bean
public Stage testStage2() {
return newStage2;
}
}
用例是,如果我提供满足AnotherConfiguration 的条件参数的参数,则应将newStage2 返回给所有期望testStage2 bean 的类。但目前,testStage2 bean 正在从 Configuration 类解析,而不是被 AnotherConfiguration 覆盖。
我已经尝试将@Primary 注释添加到AnotherConfiguration 的定义中,但这只是将newStage2 解析为所有期望Stage 类型的bean 的类,而与限定符无关。有没有办法指示 spring 仅覆盖相同 QualifierName 的 bean 定义(此处为 testStage2。
由于项目限制,我无法对Configuration.java 进行更改,但可以对AnotherConfiguration.java 进行任何更改,保持名称 (testStage2()) 不变。
【问题讨论】:
-
阅读this。 bean 覆盖是不好的,无法以任何方式确定。尝试解决它
标签: java spring spring-boot