Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 通过manifest.yml文件配置目录项_Spring Boot_Spring Cloud - Fatal编程技术网

Spring boot 通过manifest.yml文件配置目录项

Spring boot 通过manifest.yml文件配置目录项,spring-boot,spring-cloud,Spring Boot,Spring Cloud,使用springcloudfoundry服务代理我们开发了一个服务代理 最初,我们在application.yml文件中定义了目录项,该文件捆绑在jar中,这一切都非常有效 我们没有在jar文件中绑定目录项,而是考虑通过manifest.yml文件提供,同时将服务推到CloudFoundry。 但不幸的是,应用程序没有获得manigest.yml文件中指定的目录项。您能告诉我们如何通过manifest.yml文件提供目录项目吗 我已经在这里复制了我的代码片段 CatalogConfig.java

使用
springcloudfoundry服务代理
我们开发了一个
服务代理

最初,我们在
application.yml
文件中定义了目录项,该文件捆绑在jar中,这一切都非常有效

我们没有在jar文件中绑定目录项,而是考虑通过
manifest.yml
文件提供,同时将服务推到
CloudFoundry
。 但不幸的是,应用程序没有获得
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();
}
}    
那不行

当将应用程序推送到CF时,
manifest.yml
文件仅用于提供选项。部署的应用程序从未看到此文件或其任何内容。事实上,CF平台本身从未看到该文件或其内容-它完全由客户端的CLI处理

application.yml
文件由使用,内容通过
@ConfigurationProperties
和其他方式提供给应用程序

这是两个完全独立的概念和机制,两者都使用YAML数据格式

那不行

当将应用程序推送到CF时,
manifest.yml
文件仅用于提供选项。部署的应用程序从未看到此文件或其任何内容。事实上,CF平台本身从未看到该文件或其内容-它完全由客户端的CLI处理

application.yml
文件由使用,内容通过
@ConfigurationProperties
和其他方式提供给应用程序


这是两个完全独立的概念和机制,两者都使用YAML数据格式

感谢斯科特的快速回复。无论如何,我们可以通过清单文件将目录项作为环境变量发送。若它只是一个字符串,我可以通过清单文件将该属性发送到我的配置类,但由于目录项是列表项,我不确定如何将其作为环境变量发送。如果有任何可能性,请告诉我!您可以使用manifest.yml中的“env”块指定要在应用程序上设置的环境变量,就像您在上面的示例中使用“SPRING\u PROFILES\u DEFAULT:cloud”环境变量一样。但是我们如何将目录项指定为环境变量呢?我认为所有环境变量都是String类型,但目录项是list。“但是我们如何将目录项指定为环境变量呢?”您不能轻松地这样做,因为目录元数据是结构化数据图,而环境变量必须是字符串。如果您打算以声明方式指定目录元数据,则需要在application.yml中执行此操作。您在上面说过这很好,为什么不满足您的要求呢?我希望将目录项外部化,但不捆绑war/jar。所以,我想在manifest.yml文件中说明。谢谢Scott的快速回复。无论如何,我们可以通过清单文件将目录项作为环境变量发送。若它只是一个字符串,我可以通过清单文件将该属性发送到我的配置类,但由于目录项是列表项,我不确定如何将其作为环境变量发送。如果有任何可能性,请告诉我!您可以使用manifest.yml中的“env”块指定要在应用程序上设置的环境变量,就像您在上面的示例中使用“SPRING\u PROFILES\u DEFAULT:cloud”环境变量一样。但是我们如何将目录项指定为环境变量呢?我认为所有环境变量都是String类型,但目录项是list。“但是我们如何将目录项指定为环境变量呢?”您不能轻松地这样做,因为目录元数据是结构化数据图,而环境变量必须是字符串。如果您打算以声明方式指定目录元数据,则需要在application.yml中执行此操作。您在上面说过这很好,为什么不满足您的要求呢?我希望将目录项外部化,但不捆绑war/jar。所以,我想在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/