使用spring-cloud-cloudfoundry-service-broker
我們開發了一個service broker
。
最初我們在application.yml
文件中定義了目錄項,它被捆綁在jar裏面,這一切都很好。通過manifest.yml文件配置目錄項
我們沒有在jar文件中捆綁目錄項,而是在推送服務時通過manifest.yml
文件提供給cloud foundry
。 但不幸的是,應用程序未獲取manigest.yml
文件中指定的目錄項目。您能否讓我們知道我們如何通過manifest.yml
文件提供商品目錄?
我在這裏複製了我的代碼片段。
CatalogConfig.java
@ConfigurationProperties(prefix = "catalog")
@Component
public class CatalogConfig {
private List<ServiceDefinitionProxy> services;
public CatalogConfig() {
super();
}
@Bean
Catalog catalog() {
return new Catalog(services.stream().map(s -> s.unproxy())
.collect(Collectors.toList()));
}
public CatalogConfig(List<ServiceDefinitionProxy> services) {
super();
this.services = services;
}
public List<ServiceDefinitionProxy> getServices() {
return services;
}
public void setServices(List<ServiceDefinitionProxy> services) {
this.services = services;
}
public ServiceDefinitionProxy findServiceDefinition(String serviceId) {
return services.stream().filter(s -> s.getId().equals(serviceId))
.findFirst().get();
}
}
Manifest.yml
---
applications:
- name: my-service-broker
memory: 512M
instances: 1
host: my-service-broker
path: target/my-service-broker-1.0.0-SNAPSHOT.jar
env:
SPRING_PROFILES_DEFAULT: cloud
catalog:
services:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68578
name: api-marketpace
description: API Marketplace
bindable: true
planUpdatable: true
head-type: api
tags:
- api
- Manage API Marketplace
metadata:
displayName: API Marketplace
imageUrl: https://my-service-broker.cf.com/images/logo.PNG
longDescription: API Marketplace.
providerDisplayName: API Team
documentationUrl: https://wikihub.com/display/ASC/Training
supportUrl: https://wikihub.com/display/ASC/Training
plans:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68579
name: unlimited
description: free
metadata:
costs:
- amount:
usd: 0.00
unit: PER MONTH
bullets:
- Basic Unlimited
dashboardClient:
id: api-marketpace
secret: secret
redirectUrl: https://api.cf.com/
感謝Scott的快速回復。無論如何,我們可以通過清單文件將目錄項作爲環境變量發送。如果它只是一個字符串,我可以設法通過清單文件將該屬性發送給我的配置類,但由於目錄項是列表,我不知道如何將它作爲環境變量發送。讓我知道是否有任何可能! – Dombe
您可以使用manifest.yml中的「env」塊指定應用程序中設置的env vars,就像您在上面的示例中使用「SPRING_PROFILES_DEFAULT:cloud」env var一樣。 –
但是,我們如何將目錄項目指定爲環境變量?我認爲所有的環境變量都是String類型,但目錄項是列表。 – Dombe