#configuration #quarkus
Вопрос:
Я пишу расширение Quarkus (внутреннее использование) и не могу понять, как правильно написать часть конфигурации.
Мне нужно настроить конфигурацию, которая выглядит следующим образом, список объектов, содержащий несколько свойств конфигурации.
some:
list-of-config:
- prop1: value1
prop2: value2
prop3: value3
- prop1: value4
prop2: value5
prop3: value6
Поэтому я подумал использовать @ConfigGroup и список<>, как в следующем примере:
@ConfigRoot(name = "some", phase = ConfigPhase.BUILD_TIME)
public class MyConfig {
@ConfigItem(defaultValue = "true")
public boolean enabled;
public List<MyGroup> listOfConfig;
@ConfigGroup
public static class MyGroup {
@ConfigItem
public String prop1;
@ConfigItem
public String prop2;
@ConfigItem
public String prop3;
}
}
К сожалению, при запуске приложения я получаю следующее исключение:
SRCFG00013: No Converter registered for class org....MyConfig$MyGroup
@ConfigGroup работает довольно хорошо, когда они загружаются как один объект, но не как список. Я предполагаю, что на самом деле это не связано с самой группой конфигурации, так как у меня также есть эта ошибка без использования группы конфигурации, но простых объектов.
Кто-нибудь уже пытался использовать список объектов в качестве конфигурации для расширения Quarkus ? В официальной документации нет примеров по этому поводу.
Ответ №1:
Согласно документации, любой тип, не указанный в списке или не принимающий строковый параметр в качестве конструктора/valueOf/of, не может использоваться со Списком или Дополнительными типами, за исключением Необязательных, которые также могут быть применены к объекту конфигурационной группы. К сожалению, необязательная группа конфигурация прослушивается, как упоминалось здесь
Так что, похоже, пользовательские объекты не поддерживаются, что отвечает на мой вопрос. Quarkus также работает над добавлением использования сопоставления конфигураций для расширений, что должно решить проблемы и добавить поддержку сложных типов в будущих версиях (в настоящее время 2.1.0 на момент написания этого вопроса).