Package org.springframework.core.env
Class CompositePropertySource
- java.lang.Object
- org.springframework.core.env.PropertySource<T>
- org.springframework.core.env.EnumerablePropertySource<Object>
- org.springframework.core.env.CompositePropertySource
public class CompositePropertySource extends EnumerablePropertySource<Object>
CompositePropertySource
implementation that iterates over a set ofPropertySource
instances. Necessary in cases where multiple property sources share the same name, e.g. when multiple values are supplied to@PropertySource
.As of Spring 4.1.2, this class extends
EnumerablePropertySource
instead of plainPropertySource
, exposinggetPropertyNames()
based on the accumulated property names from all contained sources (as far as possible).- Since:
- 3.1.1
- Author:
- Chris Beams, Juergen Hoeller, Phillip Webb
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.env.PropertySource
PropertySource.StubPropertySource
Field Summary
Fields inherited from class org.springframework.core.env.PropertySource
logger, name, source
Constructor Summary
Constructors Constructor Description CompositePropertySource(String name)
Create a newCompositePropertySource
.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addFirstPropertySource(PropertySource<?> propertySource)
Add the givenPropertySource
to the start of the chain.void
addPropertySource(PropertySource<?> propertySource)
Add the givenPropertySource
to the end of the chain.boolean
containsProperty(String name)
Return whether thisPropertySource
contains a property with the given name.Object
getProperty(String name)
Return the value associated with the given name, ornull
if not found.String[]
getPropertyNames()
Return the names of all properties contained by the source object (nevernull
).Collection<PropertySource<?>>
getPropertySources()
Return all property sources that this composite source holds.String
toString()
Produce concise output (type and name) if the current log level does not include debug.
Constructor Detail
CompositePropertySource
public CompositePropertySource(String name)
Create a newCompositePropertySource
.- Parameters:
name
- the name of the property source
Method Detail
getProperty
public Object getProperty(String name)
Description copied from class:PropertySource
Return the value associated with the given name, ornull
if not found.- Specified by:
getProperty
in classPropertySource<Object>
- Parameters:
name
- the property to find- See Also:
PropertyResolver.getRequiredProperty(String)
containsProperty
public boolean containsProperty(String name)
Description copied from class:EnumerablePropertySource
Return whether thisPropertySource
contains a property with the given name.This implementation checks for the presence of the given name within the
EnumerablePropertySource.getPropertyNames()
array.- Overrides:
containsProperty
in classEnumerablePropertySource<Object>
- Parameters:
name
- the name of the property to find
getPropertyNames
public String[] getPropertyNames()
Description copied from class:EnumerablePropertySource
Return the names of all properties contained by the source object (nevernull
).- Specified by:
getPropertyNames
in classEnumerablePropertySource<Object>
addPropertySource
public void addPropertySource(PropertySource<?> propertySource)
Add the givenPropertySource
to the end of the chain.- Parameters:
propertySource
- the PropertySource to add
addFirstPropertySource
public void addFirstPropertySource(PropertySource<?> propertySource)
Add the givenPropertySource
to the start of the chain.- Parameters:
propertySource
- the PropertySource to add- Since:
- 4.1
getPropertySources
public Collection<PropertySource<?>> getPropertySources()
Return all property sources that this composite source holds.- Since:
- 4.1.1
toString
public String toString()
Description copied from class:PropertySource
Produce concise output (type and name) if the current log level does not include debug. If debug is enabled, produce verbose output including the hash code of the PropertySource instance and every name/value property pair.This variable verbosity is useful as a property source such as system properties or environment variables may contain an arbitrary number of property pairs, potentially leading to difficult to read exception and log messages.
- Overrides:
toString
in classPropertySource<Object>
- See Also:
Log.isDebugEnabled()