## org.springframework.core.env
Class MutablePropertySources

    java.lang.Object
      org.springframework.core.env.MutablePropertySources

All Implemented Interfaces:
  Iterable<PropertySource<?>>, PropertySources

    public class MutablePropertySources

extends Object
implements PropertySources

Default implementation of the `PropertySources` interface. Allows manipulation of contained property sources and provides a constructor for copying an existing `PropertySources` instance.

Where precedence is mentioned in methods such as `addFirst(org.springframework.core.env.PropertySource<?>)` and `addLast(org.springframework.core.env.PropertySource<?>)`, this is with regard to the order in which property sources will be searched when resolving a given property with a `PropertyResolver`.

Since:
  3.1
Author:
  Chris Beams
See Also:
  `PropertySourcesPropertyResolver`

Constructor Summary
`MutablePropertySources()` Create a new `MutablePropertySources` object.
`MutablePropertySources(PropertySources propertySources)` Create a new `MutablePropertySources` from the given propertySources object, preserving the original order of contained `PropertySource` objects.

Method Summary
`void` `addAfter(String relativePropertySourceName, PropertySource<?> propertySource)` Add the given property source object with precedence immediately lower than than the named relative property source.
`void` `addBefore(String relativePropertySourceName, PropertySource<?> propertySource)` Add the given property source object with precedence immediately higher than the named relative property source.
`void` `addFirst(PropertySource<?> propertySource)` Add the given property source object with highest precedence.
`void` `addLast(PropertySource<?> propertySource)` Add the given property source object with lowest precedence.
`protected void` `assertLegalRelativeAddition(String relativePropertySourceName, PropertySource<?> propertySource)` Ensure that the given property source is not being added relative to itself.
`boolean` `contains(String name)` Return whether a property source with the given name is contained.
`PropertySource<?>` `get(String name)` Return the property source with the given name, `null` if not found.
`Iterator<PropertySource<?>>` `iterator()`
`int` `precedenceOf(PropertySource<?> propertySource)` Return the precedence of the given property source, `-1` if not found.
`PropertySource<?>` `remove(String name)` Remove and return the property source with the given name, `null` if not found.
`protected void` `removeIfPresent(PropertySource<?> propertySource)` Log the removal of the given propertySource if it is present.
`void` `replace(String name, PropertySource<?> propertySource)` Replace the property source with the given name with the given property source object.
`int` `size()` Return the number of `PropertySource` objects contained.
`String` `toString()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### MutablePropertySources

    public MutablePropertySources()

  Create a new `MutablePropertySources` object.

### MutablePropertySources

    public MutablePropertySources(PropertySources propertySources)

  Create a new `MutablePropertySources` from the given propertySources object, preserving the original order of contained `PropertySource` objects.

Method Detail

### contains

    public boolean contains(String name)

  Description copied from interface: `PropertySources`
  Return whether a property source with the given name is contained.

  Specified by:
    `contains` in interface `PropertySources`
  Parameters:
    `name` - the name of the property source to find

### get

    public PropertySource<?> get(String name)

  Description copied from interface: `PropertySources`
  Return the property source with the given name, `null` if not found.

  Specified by:
    `get` in interface `PropertySources`
  Parameters:
    `name` - the name of the property source to find

### iterator

    public Iterator<PropertySource<?>> iterator()

  Specified by:
    `iterator` in interface `Iterable<PropertySource<?>>`

### addFirst

    public void addFirst(PropertySource<?> propertySource)

  Add the given property source object with highest precedence.

### addLast

    public void addLast(PropertySource<?> propertySource)

  Add the given property source object with lowest precedence.

### addBefore

    public void addBefore(String relativePropertySourceName,
                          PropertySource<?> propertySource)

  Add the given property source object with precedence immediately higher than the named relative property source.

### addAfter

    public void addAfter(String relativePropertySourceName,
                         PropertySource<?> propertySource)

  Add the given property source object with precedence immediately lower than than the named relative property source.

### precedenceOf

    public int precedenceOf(PropertySource<?> propertySource)

  Return the precedence of the given property source, `-1` if not found.

### remove

    public PropertySource<?> remove(String name)

  Remove and return the property source with the given name, `null` if not found.

  Parameters:
    `name` - the name of the property source to find and remove

### replace

    public void replace(String name,
                        PropertySource<?> propertySource)

  Replace the property source with the given name with the given property source object.

  Parameters:
    `name` - the name of the property source to find and replace
    `propertySource` - the replacement property source
  Throws:
    `IllegalArgumentException` - if no property source with the given name is present
  See Also:
    `contains(java.lang.String)`

### size

    public int size()

  Return the number of `PropertySource` objects contained.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### assertLegalRelativeAddition

    protected void assertLegalRelativeAddition(String relativePropertySourceName,
                                               PropertySource<?> propertySource)

  Ensure that the given property source is not being added relative to itself.

### removeIfPresent

    protected void removeIfPresent(PropertySource<?> propertySource)

  Log the removal of the given propertySource if it is present.