org.springframework.core.env
Class SystemEnvironmentPropertySource
java.lang.Object
org.springframework.core.env.PropertySource<T>
org.springframework.core.env.EnumerablePropertySource<Map<String,Object>>
org.springframework.core.env.MapPropertySource
org.springframework.core.env.SystemEnvironmentPropertySource
public class SystemEnvironmentPropertySource
- extends MapPropertySource
Specialization of MapPropertySource
designed for use with
system environment variables.
Compensates for constraints in Bash and other shells that do not allow for variables
containing the period character; also allows for uppercase variations on property
names for more idiomatic shell use.
For example, a call to getProperty("foo.bar")
will attempt to find a value
for the original property or any 'equivalent' property, returning the first found:
foo.bar
- the original name
foo_bar
- with underscores for periods (if any)
FOO.BAR
- original, with upper case
FOO_BAR
- with underscores and upper case
The same applies for calls to containsProperty(String)
, which returns
true
if any of the above properties are present, otherwise false
.
This feature is particularly useful when specifying active or default profiles as
environment variables. The following is not allowable under Bash
spring.profiles.active=p1 java -classpath ... MyApp
However, the following syntax is permitted and is also more conventional.
SPRING_PROFILES_ACTIVE=p1 java -classpath ... MyApp
Enable debug- or trace-level logging for this class (or package) for messages
explaining when these 'property name resolutions' occur.
This property source is included by default in StandardEnvironment
and all
its subclasses.
- Since:
- 3.1
- Author:
- Chris Beams
- See Also:
StandardEnvironment
,
AbstractEnvironment.getSystemEnvironment()
,
AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME
Method Summary |
boolean |
containsProperty(String name)
Return true if a property with the given name or any underscore/uppercase variant
thereof exists in this property source. |
Object |
getProperty(String name)
Return the value associated with the given name, null if not found. |
SystemEnvironmentPropertySource
public SystemEnvironmentPropertySource(String name,
Map<String,Object> source)
- Create a new
SystemEnvironmentPropertySource
with the given name and
delegating to the given MapPropertySource
.
containsProperty
public boolean containsProperty(String name)
- Return true if a property with the given name or any underscore/uppercase variant
thereof exists in this property source.
- Overrides:
containsProperty
in class EnumerablePropertySource<Map<String,Object>>
- Parameters:
name
- the property to find
getProperty
public Object getProperty(String name)
- Return the value associated with the given name,
null
if not found.
This implementation returns true
if a property with the given name or
any underscore/uppercase variant thereof exists in this property source.
- Overrides:
getProperty
in class MapPropertySource
- Parameters:
name
- the property to find- See Also:
PropertyResolver.getRequiredProperty(String)