Как динамически загружать конфигурацию hocon в класс case во время выполнения

#scala #config #case-class #hocon #pureconfig

#scala #конфигурация #класс case #hocon #pureconfig

Вопрос:

Я работаю над библиотекой, которая будет принимать конфигурацию пользователя hocon и предоставлять класс case пользователем (в пути к классу пользовательского приложения), мне нужно динамически считывать конфигурацию hocon в класс case во время выполнения.. Здесь я имею в виду, что динамически я не буду знать класс case во время компиляции, я буду знать класс case только во время выполнения с помощью пользовательского ввода.

Как я могу прочитать hocon в классе case, используя его имя класса или classstag? Я пытался использовать pureconfig или kxbmap / configs и другие оболочки scala вокруг tsconfig, но им нужна информация о классе case во время компиляции.

Есть ли какие-либо инструменты для динамического чтения hocon в классы case во время выполнения?

Комментарии:

1. Вызывает ли действие пользователя создание файла hocon? И затем вы запускаете jar с этой конфигурацией файла?

2. Должно быть лучшее решение вместо изменения вашего app conf во время выполнения. Не могли бы вы добавить больше деталей?

3. Я могу думать только об отражении во время выполнения, которое рекурсивно пытается инициализировать вещи, и мне нужны некоторые предоставленные конфигурации для обработки «примитивных» типов данных. Но это действительно выявляет худшее в Java: отражение во время выполнения, ошибки во время выполнения, аннотации или текстовые конфигурации для настройки инициализации и т. Д.

4. Пользователь @EmiCareOfCell44 предоставляет статические файлы hocon, а также предоставляет класс case, для которого они считываются, в соответствии с соглашением об именовании.. Я пишу задачу gradle, которая будет считывать файлы hocon и анализировать их в объекты класса case. Эти объекты класса case в дальнейшем используются плагином для создания фрейма данных spark и запуска на нем некоторых SQLL. это не appconf, вы можете думать об этом как о статических файлах conf (я хотел бы использовать hocon из-за его композиционной природы).

5. Каждый раз, когда вы получаете новый hoocon- (класс case) выполняет задачу gradle?, но это не время выполнения… что такое динамическая часть?. Вы можете прочитать hoocon динамически, но содержание класса case имеет смысл только во время компиляции. Кроме того, если вам нужно использовать spark sql, класс case, возможно, не нужен (если вы можете извлечь из него схему df).