インターフェース ConfigurableEnvironment
- すべてのスーパーインターフェース:
ConfigurablePropertyResolver
、Environment
、PropertyResolver
- すべての既知のサブインターフェース:
ConfigurableWebEnvironment
Environment
型で実装される構成インターフェース。アクティブおよびデフォルトのプロファイルを設定し、基になるプロパティソースを操作するための機能を提供します。クライアントは、ConfigurablePropertyResolver
スーパーインターフェースを介して、必要なプロパティの設定と検証、変換サービスのカスタマイズなどを行うことができます。プロパティソースの操作
プロパティソースは、削除、並べ替え、置換できます。getPropertySources()
から返された MutablePropertySources
インスタンスを使用して、追加のプロパティソースを追加できます。次の例は、ConfigurableEnvironment
の StandardEnvironment
実装に対するものですが、特定のデフォルトのプロパティソースは異なる場合がありますが、一般的にどの実装にも適用できます。
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
- 関連事項:
方法の概要
修飾子と型メソッド説明void
addActiveProfile
(StringSE profile) 現在のアクティブなプロファイルのセットにプロファイルを追加します。このEnvironment
のPropertySources
を変更可能な形式で返し、このEnvironment
オブジェクトに対するプロパティを解決するときに検索する必要があるPropertySource
オブジェクトのセットを操作できるようにします。System.getenv()
の値を返します。System.getProperties()
の値を返します。void
merge
(ConfigurableEnvironment parent) 指定された親環境のアクティブプロファイル、デフォルトプロファイル、プロパティソースを、この(子)環境のそれぞれのコレクションに追加します。void
setActiveProfiles
(StringSE... profiles) このEnvironment
に対してアクティブなプロファイルのセットを指定します。void
setDefaultProfiles
(StringSE... profiles) 他のプロファイルがsetActiveProfiles(java.lang.String...)
を介して明示的にアクティブにされない場合、デフォルトでアクティブになるプロファイルのセットを指定します。インターフェース org.springframework.core.env.ConfigurablePropertyResolver から継承されたメソッド
getConversionService, setConversionService, setEscapeCharacter, setIgnoreUnresolvableNestedPlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setRequiredProperties, setValueSeparator, validateRequiredProperties
インターフェース org.springframework.core.env.Environment から継承されたメソッド
acceptsProfiles, acceptsProfiles, getActiveProfiles, getDefaultProfiles, matchesProfiles
インターフェース org.springframework.core.env.PropertyResolver から継承されたメソッド
containsProperty, getProperty, getProperty, getProperty, getProperty, getRequiredProperty, getRequiredProperty, resolvePlaceholders, resolveRequiredPlaceholders
メソッドの詳細
setActiveProfiles
このEnvironment
に対してアクティブなプロファイルのセットを指定します。コンテナーのブートストラップ中にプロファイルが評価され、Bean 定義をコンテナーに登録する必要があるかどうかが判別されます。既存のアクティブなプロファイルは、指定された引数で置き換えられます。引数なしで呼び出し、現在のアクティブなプロファイルのセットをクリアします。
addActiveProfile(java.lang.String)
を使用して、既存のセットを保持しながらプロファイルを追加します。addActiveProfile
現在のアクティブなプロファイルのセットにプロファイルを追加します。- 例外:
IllegalArgumentExceptionSE
- プロファイルが null、空、または空白のみの場合- 関連事項:
setDefaultProfiles
他のプロファイルがsetActiveProfiles(java.lang.String...)
を介して明示的にアクティブにされない場合、デフォルトでアクティブになるプロファイルのセットを指定します。- 例外:
IllegalArgumentExceptionSE
- プロファイルが null、空、または空白のみの場合- 関連事項:
getPropertySources
MutablePropertySources getPropertySources()このEnvironment
のPropertySources
を変更可能な形式で返し、このEnvironment
オブジェクトに対するプロパティを解決するときに検索する必要があるPropertySource
オブジェクトのセットを操作できるようにします。addFirst
、addLast
、addBefore
、addAfter
などのさまざまなMutablePropertySources
メソッドにより、プロパティソースの順序をきめ細かく制御できます。これは、たとえば、特定のユーザー定義のプロパティソースが、システムプロパティのセットやシステム環境変数のセットなどのデフォルトのプロパティソースよりも優先して検索されるようにする場合に役立ちます。getSystemProperties
System.getProperties()
の値を返します。ほとんどの
Environment
実装には、このシステムプロパティマップがデフォルトのPropertySource
として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。getSystemEnvironment
System.getenv()
の値を返します。ほとんどの
Environment
実装には、このシステム環境マップが検索されるデフォルトのPropertySource
として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。merge
指定された親環境のアクティブプロファイル、デフォルトプロファイル、プロパティソースを、この(子)環境のそれぞれのコレクションに追加します。親と子の両方に同じ名前の
PropertySource
インスタンスが存在する場合、子インスタンスは保持され、親インスタンスは破棄されます。これにより、子によるプロパティソースのオーバーライドが可能になり、システム環境やシステムプロパティなどの共通プロパティソース型を介した冗長な検索が回避されます。混乱や冗長なストレージを回避するために、アクティブなプロファイル名とデフォルトのプロファイル名も重複がないようにフィルタリングされます。
いずれの場合も、親環境は変更されません。
merge
の呼び出し後に発生した親環境への変更は、子には反映されないことに注意してください。merge
を呼び出す前に、親プロパティソースとプロファイル情報を構成するように注意する必要があります。- パラメーター:
parent
- マージする環境- 導入:
- 3.1.2
- 関連事項: