55.1.1 绑定服务

默认情况下,运行应用的元数据和服务连接信息被暴露为应用的环境变量(比如$VCAP_SERVICES),采用这种架构的原因是因为Cloud Foundry多语言特性(任何语言和平台都支持作为buildpack),进程级别的环境变量是语言无关(language agnostic)的。

环境变量并不总是有利于设计最简单的API,所以Spring Boot自动提取它们,然后将这些数据导入能够通过Spring Environment抽象访问的属性里:

  1. @Component
  2. class MyBean implements EnvironmentAware {
  3. private String instanceId;
  4. @Override
  5. public void setEnvironment(Environment environment) {
  6. this.instanceId = environment.getProperty("vcap.application.instance_id");
  7. }
  8. // ...
  9. }

所有的Cloud Foundry属性都以vcap作为前缀,你可以使用vcap属性获取应用信息(比如应用的公共URL)和服务信息(比如数据库证书),具体参考CloudFoundryVcapEnvironmentPostProcessor Javadoc。

Spring Cloud Connectors项目很适合比如配置数据源的任务,Spring Boot为它提供了自动配置支持和一个spring-boot-starter-cloud-connectors starter。