4

Spring Boot を使用してマイクロサービスを開発しました。このサービスは、Spring クラウド構成サーバーを使用してプロパティを取得しています。このマイクロサービスは、ヘッダーで version を受け取り、 version に基づいて適切な機能を実行します。私のgithubリポジトリには、バージョンごとに1つずつ、2つのブランチがあります。サービスは通常、次の情報を構成サーバーに送信して、プロパティを取得します -

アプリケーション名 + プロファイル + ラベル

.yml ファイルのラベルの代わりにプレースホルダーを使用する方法はありますか? ヘッダーに v1 が表示されている場合は、ラベルを動的に v1 に設定する必要があります。

編集:

このドキュメント ( http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html ) の「Git URI のプレースホルダー」セクションにプレースホルダーへの参照がありますが、値がどのように変更されるかわかりません。着信要求から動的に置換される

4

1 に答える 1

4

spring-cloud-config-server は、いくつかの REST API を利用できるようにし、プロパティ ファイルを直接クエリできるようにします。

$ hostname:port/{label}/{name}-{profiles}.properties]

git の既存のラベルと一致する限り、任意のラベルを動的に使用できます。

たとえば、gitapplication.propertiesでラベル付けされた を取得するには:v1

 $ http://${hostname}:${port}/v1/application.properties

構成サーバー REST API:

  • /{name}/{profiles}/{label:.*
  • /{ラベル}/{名前}-{プロファイル}.properties
  • /{name}-{profiles}.json
  • /{ラベル}/{名前}-{プロファイル}.json
  • /{ラベル}/{名前}-{プロファイル}.yml
  • /{ラベル}/{名前}-{プロファイル}.yaml
  • /{名前}-{プロファイル}.yml
  • /{name}-{profiles}.yaml
  • /{名前}/{プロファイル:. [^-]。}
  • /{name}-{profiles}.properties
  • /{名前}/{プロフィール}/{ラベル}/**

spring-cloud-servergit でプロパティ ファイルを使用してサンプル プロジェクトを試しました。git タグを適用し、v1v2ラベルのファイルに異なる値を適用しました (プロファイルを使用しましたremote)。

ラベル v1 :

http://localhost:8888/v1/application-remote.properties
> testproperty: remotevalue-v1

ラベル v2 :

http://localhost:8888/v2/application-remote.properties
> testproperty: remotevalue-v2

ノーラベル:

http://localhost:8888/application-remote.properties
> testproperty: remotevalue-master

Java コード

私は試していませんが、cloud-config-server の Java API を使用することもできると思います (http 要求を実行する代わりに、コントローラーを直接挿入して呼び出します)。

@Autowired
EnvironmentController environmentController;
...

Environment labelled = environmentController.labelled("application", "remote", "v1");
Map<?, ?> keyValues = labelled.getPropertySources().get(0).getSource();
于 2016-09-10T21:46:56.267 に答える