-
Notifications
You must be signed in to change notification settings - Fork 4
Environments
Leon Rosenberg edited this page Jun 15, 2018
·
4 revisions
Environments is the feature of the ConfigureMe, that allow to predefine property values for the different usage situations.
Situations (actually, anything that have a common criteria) mean something like:
- Different staging environments
- Different servers
- Different users
- Different countries
- Different groups of users ...
Environments support any level cascading. The main cascading principles are:
- Property value from the lower level overrides property (same) value from the higher level.
- If requested environment not exists, values will be taken from the higher level environment (root is the default environment).
Example This example covers all variants of environments using.
envexample.json
{
"user": "defuser",
"mail": "defuser@anotheria.net",
"managers": {
"user": "managers",
"mail": "managers@anotheria.net"
},
"developers": {
"mail": "devs@anotheria.net",
"tom": {
"user": "tom"
},
"klark": {
"user": "klark",
"mail": "klark@anotheria.net"
},
},
}
The table below shows what values we will have on what requested environment (levels are delimits by underline ('_') symbol).
Requested environment | User Property Value | Mail Property Value |
---|---|---|
defuser | defuser@anotheria.net | |
developers | defuser | devs@anotheria.net |
developers_tom | tom | devs@anotheria.net |
developers_klark | klark | klark@anotheria.net |
developers_bob | defuser | devs@anotheria.net |
managers | managers | managers@anotheria.net |
managers_bob | managers | managers@anotheria.net |
unknownenv | defuser | defuser@anotheria.net |
unknownenv_subenv | defuser | defuser@anotheria.net |
Configuration environment can be set on program running with the following command line parameter: java -Dconfigureme.defaultEnvironment=<environment> ...
.
Examples:
java -Dconfigureme.defaultEnvironment=developers ...
java -Dconfigureme.defaultEnvironment=developers_tom ...
java -Dconfigureme.defaultEnvironment=developers_tom_office ...
Configuration environment can be set inside of program using the next code:
ConfigurationManager.INSTANCE.configure(EnvExampleConfig.getInstance(), "managers_tom");
String user = EnvExampleConfig.getInstance().getUser(); // user = "tom"