-
Notifications
You must be signed in to change notification settings - Fork 20
Introduction
ljacqu edited this page Jan 18, 2020
·
4 revisions
ConfigMe is a configuration management library with support for YAML that comes out of the box. In particular, it has the following features:
- Lightweight and flexible (few dependencies, i.e. small JAR size)
- Null-safe retrieval of values—no need to ever check for
nulls - You can add comments to your config that will be kept
- Easy to extend migration so your configuration can evolve without losing your user's settings
- Possibility to reload the entire configuration from the file at any given time
- Each configurable value is a
Propertyin ConfigMe. Properties are declared aspublic static finalfields in classes which implement theSettingsHolderinterface. - Configurations are read from a
PropertyResource(e.g. the providedYamlFileResource), which abstracts reading and writing. - The property resource may be checked for completeness with the
MigrationService, which allows you also to move renamed properties or to remove obsolete ones. TheSettingsManagerunifies the members above. On creation, it provokes a check by the migration service and allows the user to get property values from.
We'll see the details later, but as a short example, you could have properties as such:
public class TitleConfig implements SettingsHolder {
@Comment("The text of the title")
public static final Property<String> TITLE_TEXT =
newProperty("title.text", "-Default-");
@Comment("The size that the title will have")
public static final Property<Integer> TITLE_SIZE =
newProperty("title.size", 10);
}We can retrieve the values from the settings manager, and as mentioned, the value returned is guaranteed never null:
SettingsManager settingsManager = SettingsManagerBuilder
.withYamlFile("config.yml")
.configurationData(TitleConfig.class)
.useDefaultMigrationService()
.create();
int titleSize = settingsManager.getProperty(TitleConfig.TITLE_SIZE);
System.out.println("Title size is " + titleSize);It either reads the value from the configuration file, or if it is absent or invalid, it will take the default value that we've defined with the property (in this case: 10).
Saving the configuration to the file will yield something like this:
title:
# The text of the title
text: '-Default-'
# The size that the title will have
size: 10Navigation
| ∧ Home | Introduction | Technical overview » |
Guide
- Introduction
- Getting started
- Migration service
- Bean properties
- Custom property types
- Technical documentation
Updating
Development (internal)