2

私はSpring Cloud Config Serverを独学しており、プロパティをBeanに注入するのに問題があります。

したがって、テスト用に、構成クライアントとして単純な Spring Boot アプリケーションがあります。

@SpringBootApplication
@ConfigurationProperties
public class DemoApplication {

    @Value("${greeting}")
    static private String greeting;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);  
        System.out.println("The greeting is: " + greeting);
    }
}

しかし、システムは次のように出力します:

The greeting is: null

env エンドポイントを確認すると、実際に"${greeting}"プロパティが環境内にあることがわかりました。

profiles: [ ],
configService:https://github.com/mstine/config-repo.git/demo.yml: {
greeting: "Webhook"
},
configService:https://github.com/mstine/config-repo.git/application.yml: {
eureka.instance.hostname: "localhost",
eureka.instance.leaseRenewalIntervalInSeconds: 10,
eureka.instance.metadataMap.instanceId: "${vcap.application.instance_id:${spring.application.name}:${server.port:8080}}",
eureka.client.serviceUrl.defaultZone: "${vcap.services.service-registry.credentials.uri:http://127.0.0.1:8761}/eureka/",
foo: "barnyardAnimal"
},

には、値を持つconfigServiceと呼ばれるプロパティがあることに注意してください。greeting"Webhook"

私はSpring Frameworkが初めてなので、何かを台無しにしていないのではないかと思っていますか? を使用して外部プロパティにアクセスすることもできると誰かが提案してEnvironmentいますが、使用方法のチュートリアルがあまり見つかりませんでした。何か考えはありますか?

===================================更新============== ======================== 設定サーバーのコードを追加:

アプリケーション.java:

package io.spring.cloud.samples.fortuneteller.configserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

アプリケーション.yml:

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/mstine/config-repo.git
4

5 に答える 5

0

サーバーも作成して起動する必要があると思いますが、コードが表示されませんでした

@SpringBootApplication
@EnableConfigServer
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

サーバーを有効にすると、クライアントはサーバーに接続し、サーバーが保存する構成パラメーターを要求する必要があります。このサーバーは、値が格納される .yml を格納する必要があります。

クライアント コードはサーバーと通信し、bootstrap.yml で特定の値を要求する必要があります。

---
spring:
  profiles:
    active: northamerica
  application:
    name: koitoerclient
  cloud:
     config:
       uri: http://localhost:8001
server:
  port: 8002

ここの github でクライアントとサーバー コードの構成と例を見つけることができます。これは非常に単純なので、構成全体を理解することができます。

于 2016-04-09T05:17:16.913 に答える
0

私が見る限り、あなたは追加するのを忘れていました

@EnableDiscoveryClient

クライアントアプリのメインクラスの上

私はこれを行い、同様のケースでうまくいきました

于 2016-07-18T10:50:50.797 に答える
0

プロパティを静的フィールドとして注入することはできません。いくつかの @Component に注入してみてください

于 2018-12-07T11:11:14.417 に答える
0

spring-cloud-dependencies自動スターター構成でクラウド構成を取得するには、クライアント アプリケーションのクラスパスにを追加する必要があります。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring.cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
于 2019-02-18T12:11:42.727 に答える