インターフェース ConfigurableEnvironment

すべてのスーパーインターフェース:
ConfigurablePropertyResolverEnvironmentPropertyResolver
すべての既知のサブインターフェース:
ConfigurableWebEnvironment
すべての既知の実装クラス:
AbstractEnvironmentMockEnvironmentStandardEnvironmentStandardServletEnvironment

public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver
ほとんどの Environment 型で実装される構成インターフェース。アクティブおよびデフォルトのプロファイルを設定し、基になるプロパティソースを操作するための機能を提供します。クライアントは、ConfigurablePropertyResolver スーパーインターフェースを介して、必要なプロパティの設定と検証、変換サービスのカスタマイズなどを行うことができます。

プロパティソースの操作

プロパティソースは、削除、並べ替え、置換できます。getPropertySources() から返された MutablePropertySources インスタンスを使用して、追加のプロパティソースを追加できます。次の例は、ConfigurableEnvironmentStandardEnvironment 実装に対するものですが、特定のデフォルトのプロパティソースは異なる場合がありますが、一般的にどの実装にも適用できます。

Example: adding a new property source with highest search priority

 ConfigurableEnvironment environment = new StandardEnvironment();
 MutablePropertySources propertySources = environment.getPropertySources();
 Map<String, Object> myMap = new HashMap<>();
 myMap.put("xyz", "myValue");
 propertySources.addFirst(new MapPropertySource("MY_MAP", myMap));
 

Example: removing the default system properties property source

 MutablePropertySources propertySources = environment.getPropertySources();
 propertySources.remove(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME)
 

Example: mocking the system environment for testing purposes

 MutablePropertySources propertySources = environment.getPropertySources();
 MockPropertySource mockEnvVars = new MockPropertySource().withProperty("xyz", "myValue");
 propertySources.replace(StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, mockEnvVars);
 
Environment が ApplicationContext によって使用されている場合、そのような PropertySource 操作はコンテキストの refresh() メソッドが呼び出される前に実行されることが重要です。これにより、プロパティプレースホルダーコンフィギュラーによる使用を含め、コンテナーの Boot ストラッププロセス中にすべてのプロパティソースを利用できるようになります。
導入:
3.1
作成者:
Chris Beams
関連事項:
  • メソッドの詳細

    • setActiveProfiles

      void setActiveProfiles(StringSE... profiles)
      この Environment に対してアクティブなプロファイルのセットを指定します。コンテナーのブートストラップ中にプロファイルが評価され、Bean 定義をコンテナーに登録する必要があるかどうかが判別されます。

      既存のアクティブなプロファイルは、指定された引数で置き換えられます。引数なしで呼び出し、現在のアクティブなプロファイルのセットをクリアします。addActiveProfile(java.lang.String) を使用して、既存のセットを保持しながらプロファイルを追加します。

      例外:
      IllegalArgumentExceptionSE - プロファイルが null、空、または空白のみの場合
      関連事項:
    • addActiveProfile

      void addActiveProfile(StringSE profile)
      現在のアクティブなプロファイルのセットにプロファイルを追加します。
      例外:
      IllegalArgumentExceptionSE - プロファイルが null、空、または空白のみの場合
      関連事項:
    • setDefaultProfiles

      void setDefaultProfiles(StringSE... profiles)
      他のプロファイルが setActiveProfiles(java.lang.String...) を介して明示的にアクティブにされない場合、デフォルトでアクティブになるプロファイルのセットを指定します。
      例外:
      IllegalArgumentExceptionSE - プロファイルが null、空、または空白のみの場合
      関連事項:
    • getPropertySources

      MutablePropertySources getPropertySources()
      この Environment の PropertySources を変更可能な形式で返し、この Environment オブジェクトに対するプロパティを解決するときに検索する必要がある PropertySource オブジェクトのセットを操作できるようにします。addFirstaddLastaddBeforeaddAfter などのさまざまな MutablePropertySources メソッドにより、プロパティソースの順序をきめ細かく制御できます。これは、たとえば、特定のユーザー定義のプロパティソースが、システムプロパティのセットやシステム環境変数のセットなどのデフォルトのプロパティソースよりも優先して検索されるようにする場合に役立ちます。
      関連事項:
    • getSystemProperties

      MapSE<StringSE,ObjectSE> getSystemProperties()
      System.getProperties() の値を返します。

      ほとんどの Environment 実装には、このシステムプロパティマップがデフォルトの PropertySource として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。

    • getSystemEnvironment

      MapSE<StringSE,ObjectSE> getSystemEnvironment()
      System.getenv() の値を返します。

      ほとんどの Environment 実装には、このシステム環境マップが検索されるデフォルトの PropertySource として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。

    • merge

      void merge(ConfigurableEnvironment parent)
      指定された親環境のアクティブプロファイル、デフォルトプロファイル、プロパティソースを、この(子)環境のそれぞれのコレクションに追加します。

      親と子の両方に存在する同じ名前の PropertySource インスタンスの場合、子インスタンスは保持され、親インスタンスは破棄されます。これには、子によるプロパティソースのオーバーライドを許可するだけでなく、一般的なプロパティソース型を介した冗長な検索を回避する効果があります。システム環境とシステムプロパティ。

      混乱や冗長なストレージを回避するために、アクティブなプロファイル名とデフォルトのプロファイル名も重複がないようにフィルタリングされます。

      いずれの場合も、親環境は変更されません。merge の呼び出し後に発生した親環境への変更は、子には反映されないことに注意してください。merge を呼び出す前に、親プロパティソースとプロファイル情報を構成するように注意する必要があります。

      パラメーター:
      parent - マージする環境
      導入:
      3.1.2
      関連事項: