public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver
Environment
型で実装される構成インターフェース。アクティブおよびデフォルトのプロファイルを設定し、基になるプロパティソースを操作するための機能を提供します。クライアントは、ConfigurablePropertyResolver
スーパーインターフェースを介して、必要なプロパティの設定と検証、変換サービスのカスタマイズなどを行うことができます。 プロパティソースは、削除、並べ替え、置換できます。getPropertySources()
から返された MutablePropertySources
インスタンスを使用して、追加のプロパティソースを追加できます。次の例は、ConfigurableEnvironment
の StandardEnvironment
実装に対するものですが、特定のデフォルトのプロパティソースは異なる場合がありますが、一般的にどの実装にも適用できます。
ConfigurableEnvironment environment = new StandardEnvironment(); MutablePropertySources propertySources = environment.getPropertySources(); MapmyMap = new HashMap (); myMap.put("xyz", "myValue"); propertySources.addFirst(new MapPropertySource("MY_MAP", myMap));
MutablePropertySources propertySources = environment.getPropertySources(); propertySources.remove(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME)
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 ストラッププロセス中にすべてのプロパティソースを利用できるようになります。StandardEnvironment
, ConfigurableApplicationContext.getEnvironment()
修飾子と型 | メソッドと説明 |
---|---|
void | addActiveProfile(java.lang.String profile) 現在のアクティブなプロファイルのセットにプロファイルを追加します。 |
MutablePropertySources | getPropertySources() この Environment の PropertySources を変更可能な形式で返し、この Environment オブジェクトに対するプロパティを解決するときに検索する必要がある PropertySource オブジェクトのセットを操作できるようにします。 |
java.util.Map<java.lang.String,java.lang.Object> | getSystemEnvironment() 現在の SecurityManager で許可されている場合は System.getenv() の値を返し、そうでない場合は System.getenv(String) の呼び出しを使用して個々のキーにアクセスしようとするマップ実装を返します。 |
java.util.Map<java.lang.String,java.lang.Object> | getSystemProperties() 現在の SecurityManager で許可されている場合は System.getProperties() の値を返し、そうでない場合は System.getProperty(String) の呼び出しを使用して個々のキーにアクセスしようとするマップ実装を返します。 |
void | merge(ConfigurableEnvironment parent) 指定された親環境のアクティブプロファイル、デフォルトプロファイル、プロパティソースを、この(子)環境のそれぞれのコレクションに追加します。 |
void | setActiveProfiles(java.lang.String... profiles) この Environment に対してアクティブなプロファイルのセットを指定します。 |
void | setDefaultProfiles(java.lang.String... profiles) 他のプロファイルが setActiveProfiles(java.lang.String...) を介して明示的にアクティブにされない場合、デフォルトでアクティブになるプロファイルのセットを指定します。 |
acceptsProfiles, getActiveProfiles, getDefaultProfiles
getConversionService, setConversionService, setIgnoreUnresolvableNestedPlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setRequiredProperties, setValueSeparator, validateRequiredProperties
containsProperty, getProperty, getProperty, getProperty, getProperty, getPropertyAsClass, getRequiredProperty, getRequiredProperty, resolvePlaceholders, resolveRequiredPlaceholders
void setActiveProfiles(java.lang.String... profiles)
Environment
に対してアクティブなプロファイルのセットを指定します。コンテナーのブートストラップ中にプロファイルが評価され、Bean 定義をコンテナーに登録する必要があるかどうかが判別されます。 既存のアクティブなプロファイルは、指定された引数で置き換えられます。引数なしで呼び出し、現在のアクティブなプロファイルのセットをクリアします。addActiveProfile(java.lang.String)
を使用して、既存のセットを保持しながらプロファイルを追加します。
java.lang.IllegalArgumentException
- プロファイルが null、空、または空白のみの場合 addActiveProfile(java.lang.String)
, setDefaultProfiles(java.lang.String...)
, Profile
, AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME
void addActiveProfile(java.lang.String profile)
java.lang.IllegalArgumentException
- プロファイルが null、空、または空白のみの場合 setActiveProfiles(java.lang.String...)
void setDefaultProfiles(java.lang.String... profiles)
setActiveProfiles(java.lang.String...)
を介して明示的にアクティブにされない場合、デフォルトでアクティブになるプロファイルのセットを指定します。java.lang.IllegalArgumentException
- プロファイルが null、空、または空白のみの場合 AbstractEnvironment.DEFAULT_PROFILES_PROPERTY_NAME
MutablePropertySources getPropertySources()
Environment
の PropertySources
を変更可能な形式で返し、この Environment
オブジェクトに対するプロパティを解決するときに検索する必要がある PropertySource
オブジェクトのセットを操作できるようにします。addFirst
、addLast
、addBefore
、addAfter
などのさまざまな MutablePropertySources
メソッドにより、プロパティソースの順序をきめ細かく制御できます。これは、たとえば、特定のユーザー定義のプロパティソースが、システムプロパティのセットやシステム環境変数のセットなどのデフォルトのプロパティソースよりも優先して検索されるようにする場合に役立ちます。java.util.Map<java.lang.String,java.lang.Object> getSystemEnvironment()
SecurityManager
で許可されている場合は System.getenv()
の値を返し、そうでない場合は System.getenv(String)
の呼び出しを使用して個々のキーにアクセスしようとするマップ実装を返します。 ほとんどの Environment
実装には、このシステム環境マップが検索されるデフォルトの PropertySource
として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。
返された Map で Map.get(Object)
を呼び出しても、IllegalAccessException
はスローされません。SecurityManager がプロパティへのアクセスを禁止する場合、null
が返され、例外を通知する INFO レベルのログメッセージが発行されます。
java.util.Map<java.lang.String,java.lang.Object> getSystemProperties()
SecurityManager
で許可されている場合は System.getProperties()
の値を返し、そうでない場合は System.getProperty(String)
の呼び出しを使用して個々のキーにアクセスしようとするマップ実装を返します。 ほとんどの Environment
実装には、このシステムプロパティマップがデフォルトの PropertySource
として含まれることに注意してください。他のプロパティソースをバイパスすることが明確に意図されていない限り、このメソッドを直接使用しないことをお勧めします。
返された Map で Map.get(Object)
を呼び出しても、IllegalAccessException
はスローされません。SecurityManager がプロパティへのアクセスを禁止する場合、null
が返され、例外を通知する INFO レベルのログメッセージが発行されます。
void merge(ConfigurableEnvironment parent)
親と子の両方に存在する同じ名前の PropertySource
インスタンスの場合、子インスタンスは保持され、親インスタンスは破棄されます。これには、子によるプロパティソースのオーバーライドを許可するだけでなく、一般的なプロパティソース型を介した冗長な検索を回避する効果があります。システム環境とシステムプロパティ。
混乱や冗長なストレージを回避するために、アクティブなプロファイル名とデフォルトのプロファイル名も重複がないようにフィルタリングされます。
いずれの場合も、親環境は変更されません。merge
の呼び出し後に発生した親環境への変更は、子には反映されないことに注意してください。merge
を呼び出す前に、親プロパティソースとプロファイル情報を構成するように注意する必要があります。
parent
- マージする環境 AbstractApplicationContext.setParent(org.springframework.context.ApplicationContext)