open class SystemEnvironmentPropertySource : 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 and/or hyphen 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 caseThe 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.
Author
Chris Beams
Author
Juergen Hoeller
Since
3.1
See Also
StandardEnvironmentAbstractEnvironment#getSystemEnvironment()AbstractEnvironment#ACTIVE_PROFILES_PROPERTY_NAME
SystemEnvironmentPropertySource(name: String, source: MutableMap<String, Any>)
Create a new |
open fun containsProperty(name: String): Boolean
Return |
|
open fun getProperty(name: String): Any
This implementation returns |