我有一个现有的groovy micronaut应用程序,我试图改变它加载配置的位置。我不知道该写什么代码,这样我就可以设置micronaut配置的位置。我知道你可以使用micronaut.config.files系统变量或MICRONAUT_CONFIG_FILES环境变量,但这是一个糟糕的想法,因为micronaut内置在Grails中,因此在Tomcat中运行的每个Grails应用程序都将获得相同的配置并崩溃。
我也不知道在代码中的什么地方设置配置文件。当在Grails应用程序中设置配置时,有一个扩展EnvironmentAware的Application类,您可以覆盖setEnvironment,并在其中加载外部配置,但对于micronaut应用程序却没有任何暗示。
micronaut doco说它可以从“application.{extension}"加载一个配置,但是它没有说“application”是什么,或者它期望在哪个目录,或者你是否可以改变目录。“application”是一micronaut.application.name个人的application.yml中的www.example.com的值吗?我似乎不能根据这个来加载它。
然后文档讨论了从PropertySource加载,这很好,但没有告诉您可以将代码放在哪里以从PropertySource加载。有提到您可以将PropertySource传递到ApplicationContext.run(xx),但在我继承的这个应用程序中,没有提到ApplicationContext,并且micronaut文档并不十分清楚我应该如何处理ApplicationContextMicronaut.run。这显然返回了一个ApplicationContext,但不清楚在Tomcat中运行时是否调用了main(),或者当它按原样工作时,我是否应该在其上调用run(),我只是试图更改它加载其配置的位置。
2条答案
按热度按时间cld4siwp1#
问题是,我如何让我的micronaut应用程序从我告诉它的地方加载它的配置,而不是从micronaut.config.文件系统变量的位置。
我不认为我们在框架中有一个特定的特性,允许你告诉框架忽略
micronaut.config.files
。如果你想要这样的特性,你可以在https://github.com/micronaut-projects/micronaut-core/issues上请求它。如果你对此感兴趣,我建议你首先在https://github.com/micronaut-projects/micronaut-core/discussions上打开它进行讨论。um6iljoc2#
在运行应用程序之前,你可以在
Application
类的main
方法中加载外部配置文件,该路径不是micronaut.config.files
。看看下面的类,它接受配置文件夹位置作为系统属性demo.config.path
(可以是其他内容),并从该文件夹加载yaml配置文件:按原样,此代码适用于
yaml
配置文件(类路径中包含snakeyaml
)。只需稍作修改,即可使其适用于属性文件,并从环境变量(而不是系统属性)读取配置位置。完整的示例应用程序位于github