public class SystemEnvironmentPropertySource extends MapPropertySource
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 namefoo_bar
- with underscores for periods (if any)FOO.BAR
- original, with upper caseFOO_BAR
- with underscores and upper casecontainsProperty(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 ... MyAppHowever, 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.
StandardEnvironment
,
AbstractEnvironment.getSystemEnvironment()
,
AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME
PropertySource.StubPropertySource
logger, name, source
Constructor and Description |
---|
SystemEnvironmentPropertySource(String name,
Map<String,Object> source)
Create a new
SystemEnvironmentPropertySource with the given name and
delegating to the given MapPropertySource . |
Modifier and Type | Method and Description |
---|---|
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)
This implementation returns
true if a property with the given name or
any underscore/uppercase variant thereof exists in this property source. |
protected boolean |
isSecurityManagerPresent() |
getPropertyNames
public boolean containsProperty(String name)
true
if a property with the given name or any underscore/uppercase variant
thereof exists in this property source.containsProperty
in class MapPropertySource
name
- the name of the property to findpublic Object getProperty(String name)
true
if a property with the given name or
any underscore/uppercase variant thereof exists in this property source.getProperty
in class MapPropertySource
name
- the property to findPropertyResolver.getRequiredProperty(String)
protected boolean isSecurityManagerPresent()