Every application needs some external configuration to adapt its behavior to the runtime platform it's running on. It can range from the HTTP endpoints that the application must connect to, or the size of some internal structures.
These configuration parameters can also come from different sources:
- From the operating system or the container in a cloud-native environment (through the use of environment variables)
- From the Java virtual machine (with system properties)
- From some external configuration files (such as the Java properties file)
- From other places (an LDAP server, database, key-value store, and so on)
On the one hand, these configuration parameters come from many different sources. On the other hand, we want to consume them in the Java application in a simple way that does not depend on the source of the configuration....