環境リポジトリ
構成サーバーの構成データをどこに保存する必要がありますか? この動作を管理する戦略は 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 に配置することはできません。これらのプロパティは、アプリケーションの初期化の一部として使用されます。 |