While environment variables can, on rare occasions, be hit or miss, the good old Java system properties can always be trusted to be there for you. In addition to using the environment variables and command-line arguments represented by the property names prefixed with a double dash (--), Spring Boot provides you with the ability to use the plain Java system properties to set or override the configuration properties.
This can be useful in a number of situations, particularly if your application is running in a container that sets certain values during startup via the system properties that you want to get access to, or if a property value is not set via a command-line -D argument, but rather in some library via code and by calling System.setProperty(...), especially if property value is being accessed from...