Как инициализировать ApplicationContext и/или Environment

Типичная точка входа в приложение выглядит так:

public static void main(String[] args) {
    Micronaut.run(Application.class);
}

Однако в документах указано, что среду и контекст приложения можно настроить:

Например, https://docs.micronaut.io/1.1.0.M1/guide/index.html#propertySource,

void initializeTheEnvironment() {
    ...
    ApplicationContext applicationContext = ApplicationContext.run(
            PropertySource.of(
                    "test",
                    CollectionUtils.mapOf(
                        "micronaut.server.host", "foo",
                        "micronaut.server.port", 8080
                    )
            ),
            "test", "android");
    Environment environment = applicationContext.getEnvironment();

    ... what to put here to then run the application using the customizations above ... ?
}

Если я: - настраиваю среду (аналогично приведенному выше) - внедряю экземпляр среды в контроллер - затем, чтобы запустить приложение, я просто продолжаю использовать Micronaut.run()

... тогда я вижу, что мои настройки не видны во внедренном экземпляре среды.

Вопрос: учитывая инициализированный ApplicationContext и/или Environment, как мне запустить приложение, используя эту среду?

Есть ли способ передать эти сконструированные объекты в Micronaut.run(...)?

Это ненужно, потому что Micronaut каким-то образом за кулисами подхватывает уже инициализированные экземпляры объектов?

Я, вероятно, упускаю что-то очень очевидное, или это просто не ожидаемый способ использования фреймворка, но мне любопытно, поскольку документы явно вызывают эту настройку в нескольких местах...


person user11114215    schedule 25.02.2019    source источник
comment
Вы просто пытаетесь настроить одну среду? Почему программно? Вы можете использовать для этого application.yml. Вы также можете использовать конфигурации среды выполнения или bash-скрипты для установки переменных среды и загрузки их в .yml с синтаксисом ${}. Или вы можете указать, какой .yml использовать (раздел 4.2 Включенные загрузчики PropertySource, самый нижний текст «подсказки»).   -  person Brooks DuBois    schedule 27.02.2019
comment
Спасибо, Джеймс и Брукс. Я просто пытаюсь лучше понять, как работает базовая архитектура. Я согласен, что мы вряд ли будем вручную настраивать среды и т. Д. Обычно, но я был сбит с толку, почему примеры иллюстрируют это, а затем я не мог понять, как поместить это в мое тестовое приложение. Конечно, как только я увидел ответ Джеймса ниже, это стало очевидным!   -  person user11114215    schedule 28.02.2019


Ответы (1)


Вы можете сделать следующее, чтобы достичь желаемого:

Micronaut.build()
    .mainClass(Application.class)
    .propertySources(PropertySource.of(
        "test",
        CollectionUtils.mapOf(
            "micronaut.server.host", "foo",
            "micronaut.server.port", 8080
        )
    ))
    .environments("test", "android")
    .start()
person James Kleeh    schedule 25.02.2019
comment
Да, это так очевидно, как только вы написали :) Спасибо, Джеймс! - person user11114215; 28.02.2019