如何将外部application.yml加载到MicronautPicocli开发的应用程序中?
- Java:11.0.7
- 微博:2.1.2
- Micronaut 个人资料:cli-app
我在 cli-app 配置文件中有一个使用 micronaut 框架开发的应用程序。我的应用程序使用Hibernate和GORM包,所以application.yml中有相关配置
在默认配置中,micronaut 从 src/main/resources 加载 application.yml。
如果我希望我的应用程序从如下参数中加载 application.yml:
java -Dmicronaut.config=/etc/fooApp/application.yml -jar fooApp.jar
我应该怎么做 ?谢谢
回答
您可以使用micronaut.config.files系统属性提供其他配置文件。您可以使用-D或导出MICRONAUT_CONFIG_FILES环境变量来定义它。
带有-D系统属性选项的变体
java -Dmicronaut.config.files=/etc/fooApp/application.yml -jar fooApp.jar
具有内联环境变量的变体
MICRONAUT_CONFIG_FILES=/etc/fooApp/application.yml java -jar fooApp.jar
具有导出环境变量的变体
export MICRONAUT_CONFIG_FILES=/etc/fooApp/application.yml
java -jar fooApp.jar
当您使用此技术提供附加配置文件时, 中定义的所有值/etc/fooApp/application.yml将优先于 egclasspath:application.yml文件中定义的值。如果要控制特定顺序,则需要定义逗号分隔的配置文件。例如,如果您想提供一个额外的配置文件,但您想获得该classpath:application.yml文件的优先级,那么您需要执行以下操作:
java -Dmicronaut.config.files=/etc/fooApp/application.yml,classpath:application.yml -jar fooApp.jar
更多信息:https : //docs.micronaut.io/latest/guide/index.html#propertySource
?? 注意:如果您想将此/etc/fooApp.application.yml位置硬编码到您的 CLI 应用程序中,您可以执行
System.setProperty("micronaut.config.files", "/etc/fooApp/application.yml");
在main()CLI 应用程序类的方法中。但是,ConfigurationException如果文件不存在,您会得到,因此请记住,如果您决定采用这种方法,则可能需要进行一些额外的检查。我在stackoverflow-cli应用程序中做了类似的事情来存储访问令牌,然后将其注入声明性 HTTP 客户端。
THE END
二维码