【发布时间】:2020-10-05 17:50:48
【问题描述】:
我的目标是根据类路径中类的属性或存在来使用两个 bean 实现。我尝试的是 ConditionalOnPropery,见下文,但没有奏效。
我有一个类似的界面
public interface ApplicationConfigurator {
void configure(WicketApplication wicketApplication);
}
还有两个实现类
@Component
@ConditionalOnProperty(
value = "environment",
havingValue = "client",
matchIfMissing = false
)
public class OfflineApplicationConfigurator implements ApplicationConfigurator {
@Override
public void configure(WicketApplication wicketApplication) {
}
}
和
@Component
@ConditionalOnProperty(
value = "environment",
havingValue = "server",
matchIfMissing = false
)
public class OnlineApplicationConfigurator implements ApplicationConfigurator {
@Autowired
private LsgConfiguration configuration;
@Override
public void configure(WicketApplication wicketApplication) {
try {
Class.forName("org.apache.catalina.core.StandardServer");
configuration.setHttpSchema(new TomcatConnectors().getHttpConnector().getScheme());
} catch (ClassNotFoundException | ApplicationConfigurationException exception) {
configuration.setHttpSchema("http");
}
}
}
我的配置是基于 xml 的,看起来像:
<bean id="onlineApplicationConfigurator" class="com.kion.lsg.service.core.web.config.OnlineApplicationConfigurator"/>
<bean id="offlineApplicationConfigurator" class="com.kion.lsg.service.core.web.config.OfflineApplicationConfigurator"/>
现在我收到错误消息:
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [....service.core.web.config.ApplicationConfigurator] is defined: expected single matching bean but found 2: onlineApplicationConfigurator,offlineApplicationConfigurator
感谢任何帮助
【问题讨论】:
标签: java spring conditional-statements