Spring Framework has logic in SystemEnvironmentPropertySource.resolvePropertyName which is applied each time the property is accessed. For configuration properties, this logic should not be required since we directly calculate the mappings. If we obtain system environment properties directly from the source, we will potentially save one String.toUpperCase call, three String.replace calls and four calls to access the property.