A simple configuration management library with YAML support out of the box.
- 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.4.1</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(Path.of("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: ConfigMe demo.
📝 See how to use custom classes as property types in the bean properties demo.