環境リポジトリ

構成サーバーの構成データをどこに保存する必要がありますか? この動作を管理する戦略は EnvironmentRepository であり、Environment オブジェクトを提供します。この Environment は、Spring Environment (主な機能として propertySources を含む)からのドメインの浅いコピーです。Environment リソースは、次の 3 つの変数によってパラメーター化されます。

  • {application}。これはクライアント側の spring.application.name にマップされます。

  • {profile}。これはクライアント上の spring.profiles.active にマップされます(コンマ区切りリスト)。

  • {label} は、構成ファイルの「バージョン管理された」セットにラベルを付けるサーバー側の機能です。

リポジトリの実装は通常、Spring Boot アプリケーションのように動作し、{application} パラメーターに等しい spring.config.name{profiles} パラメーターに等しい spring.profiles.active から構成ファイルをロードします。プロファイルの優先順位ルールも通常の Spring Boot アプリケーションと同じです。アクティブなプロファイルがデフォルトよりも優先され、複数のプロファイルがある場合は、最後のプロファイルが優先されます(Map へのエントリの追加と同様)。

次のサンプルクライアントアプリケーションには、このブートストラップ構成があります。

spring:
  application:
    name: foo
  profiles:
    active: dev,mysql

(Spring Boot アプリケーションでは通常どおり、これらのプロパティは環境変数またはコマンドライン引数によって設定することもできます)。

リポジトリがファイルベースの場合、サーバーは application.yml (すべてのクライアント間で共有)と foo.yml (foo.yml が優先)から Environment を作成します。YAML ファイル内に Spring プロファイルを指すドキュメントが含まれている場合、(リストされているプロファイルの順序で)より高い優先順位で適用されます。プロファイル固有の YAML(またはプロパティ)ファイルがある場合、これらもデフォルトよりも高い優先順位で適用されます。優先順位が高いほど、Environment で前述した PropertySource に変換されます。(これらの同じルールは、スタンドアロンの Spring Boot アプリケーションにも適用されます。)

アプリケーションが見つからない場合にサーバーが HTTP 404 ステータスを返すように、spring.cloud.config.server.accept-empty を false に設定できます。デフォルトでは、このフラグは true に設定されます。

spring.main.* プロパティを リモート EnvironmentRepository に配置することはできません。これらのプロパティは、アプリケーションの初期化の一部として使用されます。