Package org.springframework.boot.cloud
Class CloudFoundryVcapEnvironmentPostProcessor
- java.lang.Object
- org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor
- All Implemented Interfaces:
EnvironmentPostProcessor
,org.springframework.core.Ordered
public class CloudFoundryVcapEnvironmentPostProcessor extends Object implements EnvironmentPostProcessor, org.springframework.core.Ordered
AnEnvironmentPostProcessor
that knows where to find VCAP (a.k.a. Cloud Foundry) meta data in the existing environment. It parses out the VCAP_APPLICATION and VCAP_SERVICES meta data and dumps it in a form that is easily consumed byEnvironment
users. If the app is running in Cloud Foundry then both meta data items are JSON objects encoded in OS environment variables. VCAP_APPLICATION is a shallow hash with basic information about the application (name, instance id, instance index, etc.), and VCAP_SERVICES is a hash of lists where the keys are service labels and the values are lists of hashes of service instance meta data. Examples are:VCAP_APPLICATION: {"instance_id":"2ce0ac627a6c8e47e936d829a3a47b5b","instance_index":0, "version":"0138c4a6-2a73-416b-aca0-572c09f7ca53","name":"foo", "uris":["foo.cfapps.io"], ...} VCAP_SERVICES: {"rds-mysql-1.0":[{"name":"mysql","label":"rds-mysql-1.0","plan":"10mb", "credentials":{"name":"d04fb13d27d964c62b267bbba1cffb9da","hostname":"mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com", "host":"mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com","port":3306,"user":"urpRuqTf8Cpe6", "username":"urpRuqTf8Cpe6","password":"pxLsGVpsC9A5S"} }]}
These objects are flattened into properties. The VCAP_APPLICATION object goes straight tovcap.application.*
in a fairly obvious way, and the VCAP_SERVICES object is unwrapped so that it is a hash of objects with key equal to the service instance name (e.g. "mysql" in the example above), and value equal to that instances properties, and then flattened in the same way. E.g.vcap.application.instance_id: 2ce0ac627a6c8e47e936d829a3a47b5b vcap.application.version: 0138c4a6-2a73-416b-aca0-572c09f7ca53 vcap.application.name: foo vcap.application.uris[0]: foo.cfapps.io vcap.services.mysql.name: mysql vcap.services.mysql.label: rds-mysql-1.0 vcap.services.mysql.credentials.name: d04fb13d27d964c62b267bbba1cffb9da vcap.services.mysql.credentials.port: 3306 vcap.services.mysql.credentials.host: mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com vcap.services.mysql.credentials.username: urpRuqTf8Cpe6 vcap.services.mysql.credentials.password: pxLsGVpsC9A5S ...
N.B. this initializer is mainly intended for informational use (the application and instance ids are particularly useful). For service binding you might find that Spring Cloud is more convenient and more robust against potential changes in Cloud Foundry.
Constructor Summary
Constructors Constructor Description CloudFoundryVcapEnvironmentPostProcessor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getOrder()
void
postProcessEnvironment(org.springframework.core.env.ConfigurableEnvironment environment, SpringApplication application)
Post-process the givenenvironment
.void
setOrder(int order)
Constructor Detail
CloudFoundryVcapEnvironmentPostProcessor
public CloudFoundryVcapEnvironmentPostProcessor()
Method Detail
setOrder
public void setOrder(int order)
getOrder
public int getOrder()
- Specified by:
getOrder
in interfaceorg.springframework.core.Ordered
postProcessEnvironment
public void postProcessEnvironment(org.springframework.core.env.ConfigurableEnvironment environment, SpringApplication application)
Description copied from interface:EnvironmentPostProcessor
Post-process the givenenvironment
.- Specified by:
postProcessEnvironment
in interfaceEnvironmentPostProcessor
- Parameters:
environment
- the environment to post-processapplication
- the application to which the environment belongs