有没有办法通过@Value注释访问VCAP变量?
是的,我想你需要稍微改变一下你的格式。它是
vcap.services.<service-instance-name>.credentials.hostname
. 您有服务提供者本身的名称,而不是服务实例的名称。我在上面的例子中看不到这个名字,但是我发现Javadoc很有用。它列出了以下示例。
VCAP_SERVICES: {
"rds-mysql-1.0": [
{
"credentials": {
"host": "mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com",
"hostname": "mysql-service-public.clqg2e2w3ecf.us-east-1.rds.amazonaws.com",
"name": "d04fb13d27d964c62b267bbba1cffb9da",
"password": "pxLsGVpsC9A5S",
"port": 3306,
"user": "urpRuqTf8Cpe6",
"username": "urpRuqTf8Cpe6"
},
"label": "rds-mysql-1.0",
"name": "mysql",
"plan": "10mb"
}
]
}
前任:
vcap.services.mysql.credentials.host
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/cloud/CloudFoundryVcapEnvironmentPostProcessor.html
更新
java-cfenv
是今后访问服务属性的推荐方法。它与弹簧靴的配合更为出色,而且一丝不苟。
另一个需要考虑的选择是
Spring Cloud Connectors
前任:
@Bean
public RabbitConnectionFactory rabbitFactory() {
return connectionFactory().rabbitConnectionFactory();
}
Getting Started
如果你有兴趣的话。