如何覆盖 Quarkus 中的属性?
Posted
技术标签:
【中文标题】如何覆盖 Quarkus 中的属性?【英文标题】:How can I override properties in Quarkus? 【发布时间】:2019-07-29 07:35:43 【问题描述】:我想覆盖我在Quarkus 应用程序的配置文件中配置的属性。
我怎样才能做到这一点?
【问题讨论】:
System.setProperty()
怎么样?这是一个解决我的问题的例子:***.com/a/61449847/3806701
这很可能在 Quarkus 中不起作用(取决于您何时使用)
【参考方案1】:
Quarkus 中的属性一般配置在src/main/resources/application.properties
。
对于配置 Quarkus 行为的属性(例如它侦听的 http 端口或要连接到的数据库 URL)和特定于您的应用程序的属性(例如 greeting.message
属性)都是如此.
前者的可覆盖性取决于相关配置。例如,http 属性(如quarkus.http.port
)是可覆盖的。
后者总是在运行时被覆盖。
在 JVM 模式下运行 Quarkus 应用程序时,例如,您可以执行以下操作:
java -Dgreeting.message=hi -jar example-runner.java
同样,当运行已使用 GraalVM(特别是 SubstrateVM 系统)转换为本机二进制文件的 Quarkus 应用程序时,您可以这样做:
./example-runner -Dgreeting.message=hi
更多信息可以在“Quarkus - Configuring Your Application”官方指南中找到
【讨论】:
如果您需要为不同的环境配置大量属性怎么办?在命令行上列出它们似乎效率低下。是否不能在运行时应用覆盖文件位置? 目前你不能这样做,但是有一个问题:github.com/quarkusio/quarkus/issues/1218 暂时有一个选项:如果您将application.properties
文件放在config
目录中(它本身在当前工作目录中),那么它将优先于在项目中。
@csotiriou 有一些关于记录它的问题,我现在找不到......但是代码是事实的最终来源:P。 github.com/quarkusio/quarkus/blob/master/core/runtime/src/main/…
这里是文档链接https://quarkus.io/guides/config#overriding-properties-at-runtime以上是关于如何覆盖 Quarkus 中的属性?的主要内容,如果未能解决你的问题,请参考以下文章
Quarkus & Microprofile:有没有更好的方法将 application.properties 中的属性用于@ClientHeaderParam?