当前位置: 首页 > 知识库问答 >
问题:

如何将config中的集合转换为microprofile/quarkus/smallrye中的环境变量

养振濂
2023-03-14

我们在K8集群中运行我们的应用程序,并依赖于环境变量的配置。对于Quarkus中application.properties/application.yaml参数的转换,适用以下转换规则:https://github.com/eclipse/microprofile-config/blob/master/spec/src/main/asciidoc/configsources.asciidoc#default-configsources

在此规则中,没有提到如何转换集合。

假设我有以下配置:

server.environments[0].name=dev
server.environments[0].apps[0].name=rest
server.environments[0].apps[0].services=bookstore,registration
server.environments[0].apps[0].databases=pg,h2
server.environments[0].apps[1].name=batch
server.environments[0].apps[1].services=stock,warehouse
SERVER_ENVIRONMENT_0_APPS_0_DATABASES
SERVER_ENVIRONMENT[0]_APPS[0]_DATABASES

共有1个答案

马宜民
2023-03-14

你已经很接近了,只要遵循文档中提到的规则:

因此,假定我们有一个名为server.environments[0].apps[0].name的配置属性,当您将每个非alfanumeric字符替换为_并转换为大写时,您将得到:server_environments_0__apps_0__name。请注意0apps之间的双下划线,因为您将.[替换为_。这肯定不会赢得最漂亮的env var名称,但它完成了任务:)。

您可以在MP配置的Smallrye实现中检查它是如何准确完成的-这是Quarkus使用的实现。

 类似资料:
  • 我正在尝试使用在我的Quarkus应用程序中读取环境变量,但没有成功。我认为仅指定变量名应该就足够了,但它不起作用: 我还尝试在应用程序中指定一个属性。属性 读起来就像 但变量始终为空。 我错过什么了吗?在Quarkus中读取环境变量的正确方法是什么 我正在使用Quarkus 1.2.0。最终的

  • 问题内容: 我正在尝试将一组转换为Python 2.6中的列表。我正在使用以下语法: 但是,我得到以下堆栈跟踪: 我怎样才能解决这个问题? 问题答案: 已经是清单了 你想要类似的东西吗 编辑:您的最后评论的输出 我想知道您是否做了这样的事情:

  • Set似乎是一种创建具有保证唯一元素的数组的好方法,但它不提供任何获取属性的好方法,除了generator[Set].values,它以的尴尬方式调用。 如果您可以在集合上调用和类似的函数,那么这是可以的。但你也不能那样做。 我尝试过,但似乎只转换了类数组(NodeList和TypedArrays?)对象设置为数组。再试一次:对Sets不起作用,set.prototype没有类似的静态方法。 那么

  • 问题内容: 我在Scala和Java之间遇到编译问题。 我的Java代码需要一个 我的scala代码有一个 我收到编译错误: 似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以隐式转换为Iterable。除了遍历scala集合并手动进行转换之外,我还能做些什么使这些类型起作用? 问题答案: 应该弃用恕我直言。您最好使用来明确说明转换的时间和地

  • 问题内容: 如果我从脚本运行以下命令: 没事。 但是,如果我运行: 我在教程中读到,要从shell替换环境变量,您需要先停止操作,然后对部分进行“引用”,以便不直接替换该部分,这是我所做的,并且仅当该变量在紧接之前定义时才起作用。 我如何被s识别为shell中定义的环境变量? 问题答案: 您的两个示例看起来相同,这使问题难以诊断。潜在问题: 您可能需要双引号,例如 可能包含一个斜杠,在这种情况下,

  • 在数据库中,我有以下JSON字符串: 我在AdditionalData中得到上面的JSON字符串(这是我代码中的一个属性)。 但是我需要将JSON列表转换为JSON。我没有任何特定的模型将列表映射为JSON格式。该JSON字符串可能不同(嵌套或更嵌套)。 基本上,我需要将JSON字符串转换为JSON数据,我需要在POSTMAN中显示