Class PropertySource<T>
- Type Parameters:
T
- the source type
- Direct Known Subclasses:
EnumerablePropertySource
,JndiPropertySource
,PropertySource.StubPropertySource
T
that encapsulates
properties. Examples include Properties
objects, Map
objects, ServletContext
and ServletConfig
objects (for access to init
parameters). Explore the PropertySource
type hierarchy to see provided
implementations.
PropertySource
objects are not typically used in isolation, but rather
through a PropertySources
object, which aggregates property sources and in
conjunction with a PropertyResolver
implementation that can perform
precedence-based searches across the set of PropertySources
.
PropertySource
identity is determined not based on the content of
encapsulated properties, but rather based on the name
of the
PropertySource
alone. This is useful for manipulating PropertySource
objects when in collection contexts. See operations in MutablePropertySources
as well as the named(String)
and toString()
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
enclosing Environment
.
- Since:
- 3.1
- Author:
- Chris Beams
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
PropertySource
to be used as a placeholder in cases where an actual property source cannot be eagerly initialized at application context creation time. -
Field Summary
-
Constructor Summary
ConstructorDescriptionPropertySource
(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
Modifier and TypeMethodDescriptionboolean
containsProperty
(String name) Return whether thisPropertySource
contains the given name.boolean
ThisPropertySource
object is equal to the given object if: they are the same instance thename
properties for both objects are equalgetName()
Return the name of thisPropertySource
.abstract Object
getProperty
(String name) Return the value associated with the given name, ornull
if not found.Return the underlying source object for thisPropertySource
.int
hashCode()
Return a hash code derived from thename
property of thisPropertySource
object.static PropertySource<?>
Return aPropertySource
implementation intended for collection comparison purposes only.toString()
Produce concise output (type and name) if the current log level does not include debug.
-
Field Details
-
logger
-
name
-
source
-
-
Constructor Details
-
PropertySource
Create a newPropertySource
with the given name and source object.- Parameters:
name
- the associated namesource
- the source object
-
PropertySource
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 Details
-
getName
Return the name of thisPropertySource
.See the class-level Javadoc for details on property source identity and names.
-
getSource
Return the underlying source object for thisPropertySource
. -
containsProperty
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
Return the value associated with the given name, ornull
if not found.- Parameters:
name
- the property to find- See Also:
-
equals
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
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 difficulties to read exception and log messages.
-
named
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<>(); 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"));
The returned
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
-