Как внедрить свойства конфигурации в расширение Quarkus

Я пытаюсь переместить следующий (рабочий) код в расширение:

@WebListener
public class StartupListener implements ServletContextListener {

    @ConfigProperty(name = "javax.faces.PROJECT_STAGE")
    String projectStage;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setInitParameter("javax.faces.PROJECT_STAGE", projectStage);
    }

}

Когда я перемещаю этот код в модуль расширения runtime, свойство не разрешается (оно равно нулю).

Исходный код расширения может иметь вид найдено здесь.


person rmpestano    schedule 07.06.2019    source источник
comment
Я позволю другим ответить на суть вопроса, но это свойство действительно следует читать во время сборки. Этап проекта хорошо согласуется с нашим понятием dev / test / prod и понятием профиля конфигурации. Это следует читать во время сборки и вводить в структуру как часть подхода начальной загрузки во время сборки, а не быть свойством времени выполнения, например. с помощью quarkus.io/guides/extension-authors-guide#bytecode-recording   -  person Emmanuel Bernard    schedule 07.06.2019
comment
Да, согласен, было бы неплохо, если бы javax.faces.PROJECT_STAGE был выровнен со стадией Quarkus, чтобы пользователю даже не нужно было добавлять запись в application.properties (если только кто-то не хочет переопределить поведение стадии по умолчанию)   -  person rmpestano    schedule 07.06.2019


Ответы (1)


Удалось заставить его работать программно через поставщика конфигурации:

@Override
public void contextInitialized(ServletContextEvent sce) {
    Config config = ConfigProvider.getConfig();
    String projectStage = config.getValue("javax.faces.PROJECT_STAGE", String.class);
    sce.getServletContext().setInitParameter("javax.faces.PROJECT_STAGE", projectStage);
}
person rmpestano    schedule 07.06.2019