org.springframework.boot.context.initializer
Class VcapApplicationContextInitializer

java.lang.Object
  extended by org.springframework.boot.context.initializer.VcapApplicationContextInitializer
All Implemented Interfaces:
org.springframework.context.ApplicationContextInitializer<org.springframework.context.ConfigurableApplicationContext>, org.springframework.core.Ordered

public class VcapApplicationContextInitializer
extends Object
implements org.springframework.context.ApplicationContextInitializer<org.springframework.context.ConfigurableApplicationContext>, org.springframework.core.Ordered

An ApplicationContextInitializer 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 by Environment 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 to vcap.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 smae 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
 ...
 

Author:
Dave Syer

Field Summary
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
VcapApplicationContextInitializer()
           
 
Method Summary
 int getOrder()
           
 void initialize(org.springframework.context.ConfigurableApplicationContext applicationContext)
           
 void setOrder(int order)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

VcapApplicationContextInitializer

public VcapApplicationContextInitializer()
Method Detail

setOrder

public void setOrder(int order)

getOrder

public int getOrder()
Specified by:
getOrder in interface org.springframework.core.Ordered

initialize

public void initialize(org.springframework.context.ConfigurableApplicationContext applicationContext)
Specified by:
initialize in interface org.springframework.context.ApplicationContextInitializer<org.springframework.context.ConfigurableApplicationContext>


Copyright © 2013. All Rights Reserved.