我想通过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密钥(在开发和云中将会有所不同)。
提前致谢,
答案 0 :(得分:2)
如果您想在本地从文件中解析某些内容并使用环境变量覆盖,只需使用占位符,例如
@Value("${GOOGLE_API_KEY:${google_api.key}}
private String googleKey;
并将其放在常规外部属性文件中(使用application.properties
使用Spring Boot,或只使用@PropertySource(...)
中的@Configuration
。