8

Spring Cloud Config Client を実行しようとすると、以下の問題に直面しています。

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'DATABASE_NAME' in string value "${DATABASE_NAME}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:204

POM.xmlの私の依存関係は次のとおりです。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencyManagement>
    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config</artifactId>
            <version>1.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

    </dependencies>
</dependencyManagement>

<dependencies>

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

ブートストラップ.yml

spring:
application:
name: my-config-client
cloud:
services:
  registrationMethod: route
config:
  enabled: true
  uri: http://localhost:${config.port:8888}

application.ymlは次のとおりです。

# HTTP Server
server:
port: 2222

# Spring properties
spring:
  profiles: 
    active: dev

#Disable HTTP Basic Authentication
security:
  basic:
    enabled: false

プロパティにアクセスしようとしているクラスは次のとおりです。

@RefreshScope
@Component
public class MyProperty {

    @Value("${DATABASE_NAME}")
    private String databaseName;


    public String getDatabaseName() {
        return databaseName;
    }
}

私の構成サーバーは正常に動作しています。ブラウザhttp://localhost:8888/configserver/devでこの URL を使用すると、以下の結果が得られます。

{  
   "name":"configserver",
   "profiles":[  
      "dev"
   ],
   "label":"master",
   "version":"c991526a93fb776e37e18e138c7485d894d6ea4f",
   "propertySources":[  
      {  
         "name":"https://onestash.abc.com/scm/kapmol/microservice-config-repo.git/configserver.properties",
         "source":{  
            "DATABASE_NAME":"ABC",
            "CONVERT_USERS":"Y",
            "LRDS_JNDI_NAME":"jdbc/tds_new"
         }
      }
   ]
}

この問題に直面していたすべての投稿を試しました。しかし、それは私にとってはうまくいきません。たぶん、私はいくつかのポイントを見逃しています。誰かが助けを提供できれば、それは素晴らしいことです。

ありがとう

4

2 に答える 2

1

「spencergibb」が回答したこの投稿を参照し、問題を解決できました。クライアント アプリケーションの bootstrap.yml ファイルに「spring.config.name」を追加し、問題を解決しました。今、私のbootstrap.ymlは以下のようになります:

spring:
  application:
    name: my-config-client
  cloud:
    services:
      registrationMethod: route
  config:
    name: configserver
    enabled: true
    uri: http://localhost:${config.port:8888}
于 2016-07-22T20:15:49.580 に答える