如何初始化ApplicationContext和/或环境

时间:2019-02-25 15:17:40

标签: micronaut

典型的应用程序入口点如下:

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()

...然后我可以看到我的自定义项在注入的Environment实例中不可见。

问题:给定已初始化的ApplicationContext和/或环境,然后如何使用该环境运行应用程序?

是否有办法将这些构造的对象传递给Micronaut.run(...)?

这是不必要的,因为Micronaut在后台以某种方式拾取了已经初始化的对象实例吗?

我可能缺少一些非常明显的东西,或者这根本不是使用框架的预期方式,但是我很好奇,因为文档在几个地方明确地声明了这种自定义...

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作来实现所需的目标:

Micronaut.build()
    .mainClass(Application.class)
    .propertySources(PropertySource.of(
        "test",
        CollectionUtils.mapOf(
            "micronaut.server.host", "foo",
            "micronaut.server.port", 8080
        )
    ))
    .environments("test", "android")
    .start()