public interface ConfigurableEnvironment extends Environment, ConfigurablePropertyResolver
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.
 Property sources may be removed, reordered, or replaced; and additional
 property sources may be added using the MutablePropertySources
 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.
 
 ConfigurableEnvironment environment = new StandardEnvironment();
 MutablePropertySources propertySources = environment.getPropertySources();
 Map<String, String> myMap = 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);
 
 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, including use by property
 placeholder configurers.StandardEnvironment, 
ConfigurableApplicationContext.getEnvironment()| Modifier and Type | Method and Description | 
|---|---|
| void | addActiveProfile(String profile)Add a profile to the current set of active profiles. | 
| MutablePropertySources | getPropertySources()Return the  PropertySourcesfor thisEnvironmentin mutable form,
 allowing for manipulation of the set ofPropertySourceobjects that should
 be searched when resolving properties against thisEnvironmentobject. | 
| Map<String,Object> | getSystemEnvironment()Return the value of  System.getenv()if allowed by the currentSecurityManager, otherwise return a map implementation that will attempt
 to access individual keys using calls toSystem.getenv(String). | 
| Map<String,Object> | getSystemProperties()Return the value of  System.getProperties()if allowed by the currentSecurityManager, otherwise return a map implementation that will attempt
 to access individual keys using calls toSystem.getProperty(String). | 
| void | merge(ConfigurableEnvironment parent)Append the given parent environment's active profiles, default profiles and
 property sources to this (child) environment's respective collections of each. | 
| void | setActiveProfiles(String... profiles)Specify the set of profiles active for this  Environment. | 
| void | setDefaultProfiles(String... profiles)Specify the set of profiles to be made active by default if no other profiles
 are explicitly made active through  setActiveProfiles(java.lang.String...). | 
acceptsProfiles, acceptsProfiles, getActiveProfiles, getDefaultProfiles, matchesProfilesgetConversionService, setConversionService, setIgnoreUnresolvableNestedPlaceholders, setPlaceholderPrefix, setPlaceholderSuffix, setRequiredProperties, setValueSeparator, validateRequiredPropertiescontainsProperty, getProperty, getProperty, getProperty, getProperty, getRequiredProperty, getRequiredProperty, resolvePlaceholders, resolveRequiredPlaceholdersvoid setActiveProfiles(String... profiles)
Environment. 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-onlyaddActiveProfile(java.lang.String), 
setDefaultProfiles(java.lang.String...), 
Profile, 
AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAMEvoid addActiveProfile(String profile)
IllegalArgumentException - if the profile is null, empty or whitespace-onlysetActiveProfiles(java.lang.String...)void setDefaultProfiles(String... profiles)
setActiveProfiles(java.lang.String...).IllegalArgumentException - if any profile is null, empty or whitespace-onlyAbstractEnvironment.DEFAULT_PROFILES_PROPERTY_NAMEMutablePropertySources getPropertySources()
PropertySources for this Environment in mutable form,
 allowing for manipulation of the set of PropertySource objects that should
 be searched when resolving properties against this Environment object.
 The various MutablePropertySources methods such as
 addFirst,
 addLast,
 addBefore and
 addAfter allow 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.Map<String,Object> getSystemProperties()
System.getProperties() if allowed by the current
 SecurityManager, otherwise return a map implementation that will attempt
 to access individual keys using calls to System.getProperty(String).
 Note that most Environment implementations will include this system
 properties map as a default PropertySource to be searched. Therefore, it is
 recommended that this method not be used directly unless bypassing other property
 sources is expressly intended.
 
Calls to Map.get(Object) on the Map returned will never throw
 IllegalAccessException; in cases where the SecurityManager forbids access
 to a property, null will be returned and an INFO-level log message will be
 issued noting the exception.
Map<String,Object> getSystemEnvironment()
System.getenv() if allowed by the current
 SecurityManager, otherwise return a map implementation that will attempt
 to access individual keys using calls to System.getenv(String).
 Note that most Environment implementations will include this system
 environment map as a default PropertySource to be searched. Therefore, it
 is recommended that this method not be used directly unless bypassing other
 property sources is expressly intended.
 
Calls to Map.get(Object) on the Map returned will never throw
 IllegalAccessException; in cases where the SecurityManager forbids access
 to a property, null will be returned and an INFO-level log message will be
 issued noting the exception.
void merge(ConfigurableEnvironment parent)
For any identically-named PropertySource instance 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 merge will not be
 reflected in the child. Therefore, care should be taken to configure parent
 property sources and profile information prior to calling merge.
parent - the environment to merge withAbstractApplicationContext.setParent(org.springframework.context.ApplicationContext)