public final class PropertyLoader extends Object
Utility class to load configuration properties via a list of artibrary property files by a well defined order.
User configurations should start with 'configuration.ordinal' greather than 100.
| Modifier and Type | Field and Description |
|---|---|
static int |
CONFIGURATION_ORDINAL_DEFAULT_VALUE |
static String |
CONFIGURATION_ORDINAL_PROPERTY_NAME |
| Modifier and Type | Method and Description |
|---|---|
static Properties |
getProperties(String propertyFileName) |
static Properties |
getProperties(String propertyFileName,
Function<List<Properties>,Properties> merger,
Runnable onMissing)
Look for all property files with the given name (e.g.
|
static List<Properties> |
loadAllProperties(String propertyFileName) |
static List<Properties> |
loadAllProperties(String propertyFileName,
Runnable onMissing) |
static Properties |
mergeProperties(List<Properties> sortedProperties)
Merge the given Properties in order of appearance.
|
public static final int CONFIGURATION_ORDINAL_DEFAULT_VALUE
public static final String CONFIGURATION_ORDINAL_PROPERTY_NAME
public static Properties getProperties(String propertyFileName, Function<List<Properties>,Properties> merger, Runnable onMissing)
Look for all property files with the given name (e.g. 'myconfig.properties') in the classpath. Then load all properties files and sort them by their ascending configuration order and apply them in this order.
The idea is to be able to 'override' properties by just providing a new properties file with the same name but a higher 'configuration.ordinal' than the old one.
If a property file defines no 'configuration.ordinal' property than a default
value of CONFIGURATION_ORDINAL_DEFAULT_VALUE is assumed. Any sensitive
default which is provided by the system parsing for the configuration should
have a 'configuration.ordinal' value lower than 10. In most cases a value of 1
If 2 property files have the same ordinal 'configuraiton.order' the outcome is not really defined. The Properties file which got found first will be processed first and thus get overwritten by the one found later.
propertyFileName - the name of the properties file.merger - how to merge conflicting properties sets.onMissing - executed when no file is found.public static Properties getProperties(String propertyFileName)
public static List<Properties> loadAllProperties(String propertyFileName) throws IOException
IOExceptionpublic static List<Properties> loadAllProperties(String propertyFileName, Runnable onMissing) throws IOException
IOExceptionpublic static Properties mergeProperties(List<Properties> sortedProperties)
sortedProperties - Copyright © 2008–2020 The Apache Software Foundation. All rights reserved.