我正试图在kubernetese上部署一个springboot应用程序。我已经将所有环境变量存储在配置映射中,并尝试从中读取值。有些属性需要读取int值。
在我们的代码中,它看起来像这样:
application.properties:
TOKEN_RETRY_COUNT=3
正如我们必须从ConfigMap中阅读的那样,我们已经更新了我们的application.properties,如下所述:
更新application.properties:
TOKEN_RETRY_COUNT=${STARGATE_TOKEN_RETRY_LIMIT}
配置映射
配置映射中的值如下所示。我不得不加双引号,因为没有任何引号是不允许的。
"STARGATE_TOKEN_RETRY_LIMIT": "3",
现在,当我在kubernetese上部署后试图读取这些值时,我得到了以下错误:
对于STARGATE_TOKEN_RETRY_LIMIT:
Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "STARGATE_TOKEN_RETRY_LIMIT"
目前,我已经更新了代码,将这个值作为String,然后将其解析为int,但这不是理想的方式。应该有一些标准的方式来采取不同的类型。
如果我们不能在配置映射中处理不同的类型,那么在kubernetese上为Springboot应用程序传递不同的应用程序属性的理想方式是什么?
我不认为这个问题与属性值(3(被指定为字符串("3"(有关。如果您仔细阅读错误消息,您会发现NumberFormatException
是由尝试将STARGATE_TOKEN_RETRY_LIMIT(字面上(解析为int
引起的。配置映射传递到应用程序/容器的方式可能有问题。