0

我很难将Spring Boot应用程序配置为通过Spring-Cloud连接到提供的PWS(Pivotal Web Services)Config-Server - 连接器使用Spring-Cloud-Connectors配置Spring Boot以使用PWS Config-Server

在manifest.yml的配置服务器被绑定到应用程序,它被正确地由相应的,VCAP_SERVICES条目反射:

applications: 
- name: edge-service-webapp-myapp 
    services: 
    - infrastructure-config-server 
    memory: 512M 
    env: 
    TRUST_CERTS: api.run.pivotal.io 
    SPRING_PROFILES_DEFAULT: cloud 
    instances: 1 
    host: edge-service-webapp-myapp 
    domain: cfapps.io 
    buildpack: java_buildpack 

{ 
"VCAP_SERVICES": { 
    "p-config-server": [ 
    { 
    "credentials": { 
    "access_token_uri": "https://p-spring-cloud-services.uaa.run.pivotal.io/oauth/token", 
    "client_id": "p-config-server-84d66ea6-ebc6-xxx", 
    "client_secret": "***", 
    "uri": "https://config-b4320676-xxx.cfapps.io" 
    }, ... 
} 

该应用程序是建立与弹簧引导起动父1.5。 2.RELEASE,spring-cloud-dependencies Camden.SR5和spring-cloud-services-dependencies 1.4.1.RELEASE。此外,我使用spring-cloud-starter-config和spring-boot-starter-cloud-connectors作为显式依赖项。

<dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>io.pivotal.spring.cloud</groupId> 
       <artifactId>spring-cloud-services-dependencies</artifactId> 
       <version>1.4.1.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-dependencies</artifactId> 
       <version>Camden.SR5</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      .... 
     </dependencies> 
    </dependencyManagement> 

<dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-cloud-connectors</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-starter-config</artifactId> 
     </dependency> 
     ... 

当我蜷缩在配置服务器,我可以看到可用的应用程序名称(MY-APP)和主动“云”配置文件中的应用程序版本。

spring: 
    application: 
    name: my-app 
    cloud: 
    config: 
     enabled: true 


curl -H "Authorization: Bearer XXX" https://config-b4320676-xxx.cfapps.io/tradefoundry/cloud 
{"name":"my-app","profiles":["cloud"],"label":"master","version":"389e4f909ff1303332167b2159b4d75201109d69","state":null,"propertySources":[{"name":"https://gitlab.com/myapp/configuration.git/myapp-cloud.properties","source":{"spring.thymeleaf.cache":"true","message":"Hello Cloud!"}},{"name":"https://gitlab.com/myapp/configuration.git/myapp.properties","source":{"server.compression.enabled":"true","spring.thymeleaf.cache":"true","application.version":"0.0.1"}},{"name":"https://gitlab.com/myapp/configuration.git/application.properties","source":{"server.compression.enabled":"true","spring.thymeleaf.cache":"true","application.cache.busting.enabled":"false","application.version":"0.0.1-20170202195700","server.compression.mime-types":"application/json,application/xml,text/html,text/xml,text/plain,text/css,application/javascript"}}]} 

但仍是应用程序失败在启动时,抱怨缺少财产application.version。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myWebappApplication': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'application.version' in value "${application.version}" 

我在这里错过了什么?我认为云连接器都是通过自动配置即插即用的!

欢迎任何帮助!

回答

5

要使用PWS上提供的Spring Cloud Services配置服务器,您需要使用PWS docs中显示的一组不同的客户端库。

spring-boot-starter-cloud-connectorsspring-cloud-starter-config与仅这一项依赖更换依赖性:

<dependency> 
    <groupId>io.pivotal.spring.cloud</groupId> 
    <artifactId>spring-cloud-services-starter-config-client</artifactId> 
</dependency> 

春季云服务配置服务器上的开源春云配置服务器的顶部增加了额外的基于OAuth2用户的安全性。该客户端库自动执行OAuth协商。

+0

你救了我的一天! ...现在我觉得有点愚蠢,因为跳过文档的那一部分...我草率地... – achingfingers

+0

文档是伟大的 - 一旦你发现它们存在和他们住在哪里。这些可能不是最容易找到的文档。我很高兴听到解决您的问题。 –

相关问题