Class PropertySource<T>
- java.lang.Object
- org.springframework.core.env.PropertySource<T>
- Type Parameters:
T
- the source type
- Direct Known Subclasses:
EnumerablePropertySource
,JndiPropertySource
,PropertySource.StubPropertySource
public abstract class PropertySource<T> extends Object
Abstract base class representing a source of name/value property pairs. The underlying source object may be of any typeT
that encapsulates properties. Examples includeProperties
objects,Map
objects,ServletContext
andServletConfig
objects (for access to init parameters). Explore thePropertySource
type hierarchy to see provided implementations.PropertySource
objects are not typically used in isolation, but rather through aPropertySources
object, which aggregates property sources and in conjunction with aPropertyResolver
implementation that can perform precedence-based searches across the set ofPropertySources
.PropertySource
identity is determined not based on the content of encapsulated properties, but rather based on thename
of thePropertySource
alone. This is useful for manipulatingPropertySource
objects when in collection contexts. See operations inMutablePropertySources
as well as thenamed(String)
andtoString()
methods for details.Note that when working with @
Configuration
classes that the @PropertySource
annotation provides a convenient and declarative way of adding property sources to the enclosingEnvironment
.- Since:
- 3.1
- Author:
- Chris Beams
- See Also:
PropertySources
,PropertyResolver
,PropertySourcesPropertyResolver
,MutablePropertySources
,PropertySource
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PropertySource.StubPropertySource
PropertySource
to be used as a placeholder in cases where an actual property source cannot be eagerly initialized at application context creation time.
Constructor Summary
Constructors Constructor Description PropertySource(String name)
Create a newPropertySource
with the given name and with a newObject
instance as the underlying source.PropertySource(String name, T source)
Create a newPropertySource
with the given name and source object.
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
containsProperty(String name)
Return whether thisPropertySource
contains the given name.boolean
equals(Object other)
ThisPropertySource
object is equal to the given object if: they are the same instance thename
properties for both objects are equalString
getName()
Return the name of thisPropertySource
.abstract Object
getProperty(String name)
Return the value associated with the given name, ornull
if not found.T
getSource()
Return the underlying source object for thisPropertySource
.int
hashCode()
Return a hash code derived from thename
property of thisPropertySource
object.static PropertySource<?>
named(String name)
Return aPropertySource
implementation intended for collection comparison purposes only.String
toString()
Produce concise output (type and name) if the current log level does not include debug.
Constructor Detail
PropertySource
public PropertySource(String name, T source)
Create a newPropertySource
with the given name and source object.- Parameters:
name
- the associated namesource
- the source object
PropertySource
public PropertySource(String name)
Create a newPropertySource
with the given name and with a newObject
instance as the underlying source.Often useful in testing scenarios when creating anonymous implementations that never query an actual source but rather return hard-coded values.
Method Detail
containsProperty
public boolean containsProperty(String name)
Return whether thisPropertySource
contains the given name.This implementation simply checks for a
null
return value fromgetProperty(String)
. Subclasses may wish to implement a more efficient algorithm if possible.- Parameters:
name
- the property name to find
getProperty
@Nullable public abstract Object getProperty(String name)
Return the value associated with the given name, ornull
if not found.- Parameters:
name
- the property to find- See Also:
PropertyResolver.getRequiredProperty(String)
equals
public boolean equals(@Nullable Object other)
ThisPropertySource
object is equal to the given object if:- they are the same instance
- the
name
properties for both objects are equal
No properties other than
name
are evaluated.
hashCode
public int hashCode()
Return a hash code derived from thename
property of thisPropertySource
object.
toString
public String toString()
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 classObject
- See Also:
Log.isDebugEnabled()
named
public static PropertySource<?> named(String name)
Return aPropertySource
implementation intended for collection comparison purposes only.Primarily for internal use, but given a collection of
PropertySource
objects, may be used as follows:List<PropertySource<?>> sources = new ArrayList<PropertySource<?>>(); sources.add(new MapPropertySource("sourceA", mapA)); sources.add(new MapPropertySource("sourceB", mapB)); assert sources.contains(PropertySource.named("sourceA")); assert sources.contains(PropertySource.named("sourceB")); assert !sources.contains(PropertySource.named("sourceC"));
PropertySource
will throwUnsupportedOperationException
if any methods other thanequals(Object)
,hashCode()
, andtoString()
are called.- Parameters:
name
- the name of the comparisonPropertySource
to be created and returned.