我在Spring启动应用程序中使用spring配置文件配置环境变量。我做了像
这样的配置我的界面是
public interface EnvConfiguration {
String getServerUrl();
}
我的开发配置是
@Component
public class DevelopmentConfig implements EnvConfiguration{
@Value("${DEV}")
private String serverUrl;
@Override
public String getServerUrl(){
return serverUrl;
}
}
@Configuration
@Profile("dev")
public class DevelopmentProfile {
@Bean
public EnvConfiguration getDevelopmentConfig(){
return new DevelopmentConfig();
}
}
与我为生产环境配置相同
@Component
public class ProductionConfig implements EnvConfiguration {
@Value("${PROD}")
private String serverUrl;
@Override
public String getServerUrl(){
return serverUrl;
}
}
@Configuration
@Profile("prod")
public class ProductionProfile {
@Bean
public EnvConfiguration getProductionConfig(){
return new ProductionConfig();
}
}
现在我使用run configurations-> agruments
在eclipse中配置了环境变量-Dspring.profiles.active="dev"
现在,当我尝试运行我的应用程序时,我收到错误:
expected single matching bean but found 2: productionConfig,developmentConfig
那么请帮助我,我在那里错过了什么?
提前致谢!
答案 0 :(得分:2)
我正在添加编程参数,我们必须添加vm参数
答案 1 :(得分:1)
为什么要尝试使用Java配置环境属性?
您可以将所有配置放入application.properties中。 然后,如果你想要dev环境,你就可以在application-dev.properties中覆盖你想要的属性。
对于application-prod.properties中的prod也一样。
然后你就像使用-Dspring.profiles.active = dev一样开始,你将能够使用@Value检索值。