4

私はSpring CloudとSpringの外部構成の概念に非常に慣れていません。実際、昨日から始めました。

ローカル Git リポジトリから構成を選択する 1 つの構成サーバー、構成クライアントでもある 1 つのマイクロ サービス、および 1 つの Eureka 主導のサービス検出サーバーを作成しました。

以下は、インターネット上のさまざまなリソースから主に借用したコードです-

構成サーバー - application.yml:

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: file:///${user.home}/config-repo

構成サーバー - メイン クラス (ブートストラップ)

@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication {

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

config-repo は私のマシンのローカル git リポジトリであり、構成クライアント アプリケーションの名前を持つ .yml ファイル、つまり authmanager.yml があります。

eureka:
    client:
        serviceUrl:
            defaultZone: http://127.0.0.1:8761/eureka/
        healthcheck:
            enabled: true
        lease:
            duration: 5
spring:
    application:
        data:   
            mongodb:
                host: localhost
                port: 27017
                database: edc_mc
logging:
    level:
        org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient: FULL

構成サーバーを実行した後、以下はエンドポイントhttp://localhost:8888/authmanager/defaultの出力です-

{"name":"authmanager","profiles":["default"],"label":"master","version":"0ca6ca7b4502b9bb6ce1bf8efeb25516682cf79a","propertySources":[{"name":"file:///C:\\Users\\username/config-repo/authmanager.yml","source":{"eureka.client.serviceUrl.defaultZone":"http://127.0.0.1:8761/eureka/","eureka.client.healthcheck.enabled":true,"eureka.client.lease.duration":5,"spring.application.data.mongodb.host":"localhost","spring.application.data.mongodb.port":27017,"spring.application.data.mongodb.database":"db_name","logging.level.org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient":"FULL"}}]}

マイクロ サービス + Config クライアント コード -

ブートストラップ.yml -

server:
  port: 9097

spring:
  application:
    name: authmanager
  cloud:
    config:
      uri: http://localhost:8888

クライアント - メインクラス (ブートストラップ) -

@SpringBootApplication
@EnableDiscoveryClient
@EnableWebMvc
public class CloudLoginManagerApplication {

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

構成ファイルのプロパティを使用する構成クライアントのコントローラー クラス -

@RefreshScope
@RestController
@RequestMapping("/auth")
public class MyController {

    @Value("${spring.application.data.mongodb.database}")
    String env_var;

わかりやすくするために、残りのコードはスキップします。

これは私が得ているエラーです -

Could not resolve placeholder 'spring.application.data.mongodb.database' in string value "${spring.application.data.mongodb.database}"

server.port などの他のプロパティでは問題が発生していません。

Environment インターフェイスの方法も試しましたが、null も返されます。

何かポインタをください、私は今ほとんど行き止まりに達しています。

ありがとう、

AJ

4

1 に答える 1

7

クラウド構成を有効にするにはspring-cloud-starter-config、依存関係に を追加する必要があります。/env (アクチュエーターの追加が必要な場合があります) をチェックして、使用可能なプロパティを確認することで確認できます。

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
于 2016-09-14T07:16:37.363 に答える