【发布时间】:2019-02-25 15:17:39
【问题描述】:
典型的应用程序入口点如下所示:
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 和/或 Environment,我如何使用该环境运行应用程序?
有没有办法将这些构造的对象传递给 Micronaut.run(...) ?
这是否不必要,因为 Micronaut 在幕后以某种方式获取了已经初始化的对象实例?
我可能遗漏了一些非常明显的东西,或者这根本不是使用框架的预期方式,但我很好奇,因为文档在一些地方明确调用了这种自定义......
【问题讨论】:
-
您只是想配置一个环境吗?为什么以编程方式?您可以为此使用 application.yml。您还可以使用运行时配置或 bash 脚本来设置环境变量并使用 ${} 语法将它们加载到 .yml 中。或者您可以设置要使用的 .yml(第 4.2 节“包含的 PropertySource 加载器”最底部的“提示”文本)。
-
感谢詹姆斯和布鲁克斯。我只是想更好地理解底层架构是如何工作的。我同意我们通常不会手动配置环境等,但是我很困惑为什么这些示例说明了这一点,然后我不知道如何将其放入我的测试应用程序中。当然,一旦我看到詹姆斯在下面的回复就很明显了!
标签: micronaut