如何将外部 application.yml 加载到使用 Micronaut Picocli 开发的应用程序中?
How to load external application.yml into the app developed with Micronaut Picocli?
- Java: 11.0.7
- Micronaut: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
中定义的所有值将优先于例如classpath: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");
在 CLI 应用程序的 main()
方法中 class。但是,如果文件不存在,您将得到 ConfigurationException
,因此请记住,如果您决定采用这种方法,您可能需要进行一些额外的检查。我在 Whosebug-cli
应用程序 to store an access token 中做了类似的事情,稍后将其注入到声明性 HTTP 客户端。
- Java: 11.0.7
- Micronaut: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
中定义的所有值将优先于例如classpath: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");
在 CLI 应用程序的 main()
方法中 class。但是,如果文件不存在,您将得到 ConfigurationException
,因此请记住,如果您决定采用这种方法,您可能需要进行一些额外的检查。我在 Whosebug-cli
应用程序 to store an access token 中做了类似的事情,稍后将其注入到声明性 HTTP 客户端。