有关Spring Cloud本地配置连接器和任意属性的询问

时间:2014-10-13 19:18:17

标签: spring-cloud

我想通过spring-cloud.properties文件提供许多属性(例如google api密钥)(请参阅spring cloud local-configuration connector documentation here)。< / p>

这是我做的:

1)将我的google api密钥放在spring-cloud.properties文件中,如下所示:

spring.cloud.appId:    bignibou
spring.cloud.database: mysql://root:root@localhost:3306/bignibou_dev
google_api.key: AIzaSyBjHuQsAxxx

2)尝试按如下方式加载它:

@Configuration
@Profile({ Profiles.DEFAULT, Profiles.CLOUD, Profiles.DEV, Profiles.CAPACITY_TEST })
public class CloudConfiguration extends AbstractCloudConfig {

    @Bean
    public ApplicationInstanceInfo applicationInfo() {
        return cloud().getApplicationInstanceInfo();
    }

}

...

@Autowired
private ApplicationInstanceInfo applicationInstanceInfo;

然而,我properties的{​​{1}}变量似乎总是空的......

请参阅源代码:empty map

这是预期的行为吗?如何使用本地配置连接器来检索任意属性,例如google api密钥(在开发和云中将会有所不同)。

提前致谢,

1 个答案:

答案 0 :(得分:2)

如果您想在本地从文件中解析某些内容并使用环境变量覆盖,只需使用占位符,例如

@Value("${GOOGLE_API_KEY:${google_api.key}}
private String googleKey;

并将其放在常规外部属性文件中(使用application.properties使用Spring Boot,或只使用@PropertySource(...)中的@Configuration