Compact configuration library for Java applications, built on top of Configurate.
FunctionalConfiguration — небольшая abstraction layer над Configurate для работы с конфигурационными файлами.
Основной API разделён на:
Config— конфигурация;ConfigLoader— создание конфигураций;ConfigManager— регистрация и управление несколькими конфигурациями;MappedConfigLoader— загрузка конфигураций вместе с их именами;YamlConfig— готовая YAML-реализация.
repositories {
mavenCentral()
maven("https://jitpack.io")
}
dependencies {
implementation("com.github.g4vrk:FunctionalConfiguration:1.1.0")
}Для Configurate:
dependencies {
implementation("org.spongepowered:configurate-yaml:4.2.0")
}Gradle Groovy
repositories {
mavenCentral()
maven { url = uri('https://jitpack.io') }
}
dependencies {
implementation 'com.github.g4vrk:FunctionalConfiguration:1.1.0'
implementation 'org.spongepowered:configurate-yaml:4.2.0'
}Maven
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.g4vrk.FunctionalConfiguration</groupId>
<artifactId>common</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.spongepowered</groupId>
<artifactId>configurate-yaml</artifactId>
<version>4.2.0</version>
</dependency>
</dependencies>Создайте YamlConfig из Configurate loader:
YamlConfigurationLoader loader = YamlConfigurationLoader.builder()
.path(path)
.build();
YamlConfig config = new YamlConfig(loader);
config.load();Доступ к данным:
config.root();
config.node("database", "host");
config.node("database", "port");Сохранение:
config.save();Вместо создания Configurate loader вручную можно использовать YamlConfigLoader:
YamlConfigLoader loader = new YamlConfigLoader();
YamlConfig config = loader.from(path);По умолчанию конфигурация загружается сразу.
Для отложенной загрузки:
YamlConfigLoader loader = new YamlConfigLoader(false);
YamlConfig config = loader.from(path);
config.load();Несколько файлов:
Iterable<YamlConfig> configs = loader.from(paths);ConfigManager хранит конфигурации по ключу:
ConfigManager<YamlConfig> manager = new YamlConfigManager<>();
manager.register("config", config);
manager.register("messages", messages);Массовая регистрация:
manager.registerAll(Map.of(
"config", config,
"messages", messages
));Поиск:
manager.find("messages");Без Optional:
YamlConfig messages = manager.findOrNull("messages");Проверка:
if (manager.contains("messages")) {
// ...
}Удаление:
YamlConfig removed = manager.remove("messages");Все конфигурации:
for (YamlConfig config : manager.values()) {
// ...
}Все зарегистрированные конфигурации можно обработать одним вызовом:
manager.loadAll();manager.saveAll();manager.reloadAll();MappedConfigLoader связывает конфигурацию с именем файла.
MappedConfigLoader<YamlConfig> loader =
new SimpleMappedConfigLoader<>(
new YamlConfigLoader(),
PrimaryFileNamer.INSTANCE
);Загрузка:
NamedConfigEntry<YamlConfig> entry = loader.from(file);Получение имени и конфигурации:
entry.name();
entry.config();Собственный способ именования:
FileNamer namer = file -> file.getName()
.replace(".yml", "");
MappedConfigLoader<YamlConfig> loader =
new SimpleMappedConfigLoader<>(
new YamlConfigLoader(),
namer
);API не ограничивается YAML.
Основные abstraction'ы используют generics:
Config
ConfigLoader<C>
ConfigManager<C>
MappedConfigLoader<C>Это позволяет создавать собственные реализации Config и использовать с ними существующие manager/loader abstractions.
Config
│
├── YamlConfig
│
└── custom implementations
ConfigLoader
│
└── YamlConfigLoader
ConfigManager
│
└── YamlConfigManager
MappedConfigLoader
│
└── SimpleMappedConfigLoader
Требуется Java 17+.
./gradlew buildДля Windows:
.\gradlew.bat buildГотовый JAR:
common/build/libs/
FunctionalConfiguration распространяется под MIT — см. LICENSE.