接口 ConfigurableEnvironment
- 所有已知实现类:
AbstractEnvironment,StandardEnvironment
Environment types.
Provides facilities for setting active and default profiles and manipulating underlying
property sources. Allows clients to set and validate required properties, customize the
conversion service and more through the ConfigurablePropertyResolver
superinterface.
Manipulating property sources
Property sources may be removed, reordered, or replaced; and additional
property sources may be added using the PropertySources
instance returned from getPropertySources(). The following examples
are against the StandardEnvironment implementation of
ConfigurableEnvironment, but are generally applicable to any implementation,
though particular default property sources may differ.
Example: adding a new property source with highest search priority
ConfigurableEnvironment environment = new StandardEnvironment();
PropertySources propertySources = environment.getPropertySources();
Map<String, String> myMap = new HashMap<>();
myMap.put("xyz", "myValue");
propertySources.addFirst(new MapPropertySource("MY_MAP", myMap));
Example: removing the default system properties property source
PropertySources propertySources = environment.getPropertySources(); propertySources.remove(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME)
Example: mocking the system environment for testing purposes
PropertySources propertySources = environment.getPropertySources();
MockPropertySource mockEnvVars = new MockPropertySource().withProperty("xyz", "myValue");
propertySources.replace(StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, mockEnvVars);
When an Environment is being used by an ApplicationContext, it is
important that any such PropertySource manipulations be performed
before the context's refresh()
method is called. This ensures that all property sources are available during the
container bootstrap process.- 从以下版本开始:
- 4.0
- 作者:
- Chris Beams
- 另请参阅:
-
StandardEnvironmentcn.taketoday.context.ConfigurableApplicationContext#getEnvironment
-
字段概要
-
方法概要
修饰符和类型方法说明voidaddActiveProfile(String profile) Add a profile to the current set of active profiles.Return thePropertySourcesfor thisEnvironmentin mutable form, allowing for manipulation of the set ofPropertySourceobjects that should be searched when resolving properties against thisEnvironmentobject.Return the value ofSystem.getenv().Return the value ofSystem.getProperties().voidmerge(ConfigurableEnvironment parent) Append the given parent environment's active profiles, default profiles and property sources to this (child) environment's respective collections of each.voidsetActiveProfiles(String... profiles) Specify the set of profiles active for thisEnvironment.voidsetDefaultProfiles(String... profiles) Specify the set of profiles to be made active by default if no other profiles are explicitly made active throughsetActiveProfiles(java.lang.String...).从接口继承的方法 cn.taketoday.core.env.ConfigurablePropertyResolver
addRequiredProperties, getConversionService, setConversionService, setIgnoreUnresolvableNestedPlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setRequiredProperties, setValueSeparator, validateRequiredProperties从接口继承的方法 cn.taketoday.core.env.Environment
acceptsProfiles, acceptsProfiles, getActiveProfiles, getDefaultProfiles从接口继承的方法 cn.taketoday.core.env.PropertyResolver
containsProperty, getFlag, getFlag, getProperty, getProperty, getProperty, getProperty, getRequiredProperty, getRequiredProperty, resolvePlaceholders, resolveRequiredPlaceholders
-
方法详细资料
-
setActiveProfiles
Specify the set of profiles active for thisEnvironment. Profiles are evaluated during container bootstrap to determine whether bean definitions should be registered with the container.Any existing active profiles will be replaced with the given arguments; call with zero arguments to clear the current set of active profiles. Use
addActiveProfile(java.lang.String)to add a profile while preserving the existing set.- 抛出:
IllegalArgumentException- if any profile is null, empty or whitespace-only- 另请参阅:
-
addActiveProfile(java.lang.String)setDefaultProfiles(java.lang.String...)cn.taketoday.context.annotation.ProfileEnvironment.KEY_ACTIVE_PROFILES
-
addActiveProfile
Add a profile to the current set of active profiles.- 抛出:
IllegalArgumentException- if the profile is null, empty or whitespace-only- 另请参阅:
-
setDefaultProfiles
Specify the set of profiles to be made active by default if no other profiles are explicitly made active throughsetActiveProfiles(java.lang.String...).- 抛出:
IllegalArgumentException- if any profile is null, empty or whitespace-only- 另请参阅:
-
getPropertySources
PropertySources getPropertySources()Return thePropertySourcesfor thisEnvironmentin mutable form, allowing for manipulation of the set ofPropertySourceobjects that should be searched when resolving properties against thisEnvironmentobject. The variousPropertySourcesmethods such asaddFirst,addLast,addBeforeandaddAfterallow for fine-grained control over property source ordering. This is useful, for example, in ensuring that certain user-defined property sources have search precedence over default property sources such as the set of system properties or the set of system environment variables. -
getSystemProperties
Return the value ofSystem.getProperties().Note that most
Environmentimplementations will include this system properties map as a defaultPropertySourceto be searched. Therefore, it is recommended that this method not be used directly unless bypassing other property sources is expressly intended. -
getSystemEnvironment
Return the value ofSystem.getenv().Note that most
Environmentimplementations will include this system environment map as a defaultPropertySourceto be searched. Therefore, it is recommended that this method not be used directly unless bypassing other property sources is expressly intended. -
merge
Append the given parent environment's active profiles, default profiles and property sources to this (child) environment's respective collections of each.For any identically-named
PropertySourceinstance existing in both parent and child, the child instance is to be preserved and the parent instance discarded. This has the effect of allowing overriding of property sources by the child as well as avoiding redundant searches through common property source types, e.g. system environment and system properties.Active and default profile names are also filtered for duplicates, to avoid confusion and redundant storage.
The parent environment remains unmodified in any case. Note that any changes to the parent environment occurring after the call to
mergewill not be reflected in the child. Therefore, care should be taken to configure parent property sources and profile information prior to callingmerge.- 参数:
parent- the environment to merge with- 另请参阅:
-
cn.taketoday.context.support.AbstractApplicationContext#setParent
-