如何将配置文件激活为环境变量

时间:2015-06-27 09:12:37

标签: spring spring-boot spring-profiles

我在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"

Bootstrap application

现在,当我尝试运行我的应用程序时,我收到错误:

expected single matching bean but found 2: productionConfig,developmentConfig

那么请帮助我,我在那里错过了什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

我正在添加编程参数,我们必须添加vm参数

答案 1 :(得分:1)

为什么要尝试使用Java配置环境属性?

您可以将所有配置放入application.properties中。 然后,如果你想要dev环境,你就可以在application-dev.properties中覆盖你想要的属性。

对于application-prod.properties中的prod也一样。

然后你就像使用-Dspring.profiles.active = dev一样开始,你将能够使用@Value检索值。