A simple configuration management library with out of the box YAML support.
- Lightweight
- Flexible
- Out of the box support for YAML
- Allows migrations / config file checks
- Null-safe
- Unit testing friendly
- 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 rename properties or to remove obsolete ones. - The
SettingsManagerunifies the members above. On creation, it calls the migration service and allows you to get and change property values.
Start using ConfigMe by adding this to your pom.xml:
<dependencies>
<dependency>
<groupId>ch.jalu</groupId>
<artifactId>configme</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>config.yml
title:
text: 'Hello'
size: 12TitleConfig.java
public class TitleConfig implements SettingsHolder {
public static final Property<String> TITLE_TEXT =
newProperty("title.text", "-Default-");
public static final Property<Integer> TITLE_SIZE =
newProperty("title.size", 10);
private TitleConfig() {
// prevent instantiation
}
}WelcomeWriter.java
public class WelcomeWriter {
public String generateWelcomeMessage() {
SettingsManager settings = SettingsManagerBuilder
.withYamlFile("config.yml")
.configurationData(TitleConfig.class)
.useDefaultMigrationService()
.create();
// Get properties from the settings manager
return "<font size=\""
+ settings.getProperty(TitleConfig.TITLE_SIZE) + "\">"
+ settings.getProperty(TitleConfig.TITLE_TEXT) + "</font>";
}
}📝 Read the full documentation in the ConfigMe Wiki.
📝 See a full working example based on this here.
📝 See how to use custom classes as property types in the bean properties demo.