## 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`

Nested Class Summary

Nested classes/interfaces inherited from class org.springframework.core.env.PropertySource
`PropertySource.StubPropertySource`

Field Summary

Fields inherited from class org.springframework.core.env.EnumerablePropertySource
`EMPTY_NAMES_ARRAY, logger`

Fields inherited from class org.springframework.core.env.PropertySource
`name, source`

Constructor Summary
`SystemEnvironmentPropertySource(String name, Map<String,Object> source)` Create a new `SystemEnvironmentPropertySource` with the given name and delegating to the given `MapPropertySource`.

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.

Methods inherited from class org.springframework.core.env.MapPropertySource
`getPropertyNames`

Methods inherited from class org.springframework.core.env.PropertySource
`equals, getName, getSource, hashCode, named, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### SystemEnvironmentPropertySource

    public SystemEnvironmentPropertySource(String name,
                                           Map<String,Object> source)

  Create a new `SystemEnvironmentPropertySource` with the given name and delegating to the given `MapPropertySource`.

Method Detail

### 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)`