我们有一个企业Kubernetes设置,我将在上面部署一个Spring Boot应用程序
该服务在该位置将configMap作为json文件注入(inject)-/etc/config/appConfig.json
JSON文件看起来像
{
"configResolution": {
"resolved": {
"groupid": "listener-consumerGrp",
"topic": "Product"
}
}
}
我正在尝试在 Spring 引导中将K-V对读取为变量String groupid;
String topic
需要15分钟刷新时间才能获得有关使用Spring Cloud Kubernetes进行阅读的帮助这是application.yml,我用过
spring:
profiles: dev
cloud:
kubernetes:
config:
name: PLACEHOLDER-LISTENER
namespace: team924
enable-api: false
paths:
-/etc/config/appConfig.json
reload:
enabled: true
mode: polling
period: 150000
任何帮助表示赞赏
最佳答案
正如您在Spring Cloud Kubernetes documentation中看到的那样,您的application.yaml
看起来不错:它将在不支持API的情况下允许您访问 namespace ConfigMap
中名称为PLACEHOLDER-LISTENER
的team924
。
每次轮询ConfigMap
中的更改都会重新加载此配置-在这里您指定的数量与您建议的15
分钟不同,请注意-150
秒。
问题是,此ConfigMap
由一个JSON文件定义,我想您创建了from a file和mounted as a volume,并且此机制不允许您直接在Spring中映射名称/值属性。
老实说,我从未测试过这种行为,但是我最好的选择是,在最好的情况下,如果Spring能够处理该文件-我认为这很有可能,尽管documentation尚不清楚-它将遵循与Kubernetes类似的方法,它将为您提供一个配置属性,其中包含名称,文件名和值以及整个JSON文件内容。必须使用Jackson或其他JSON处理库来实际处理此文件内容。
关于java - 从K8S ConfigMap文件将嵌套的JSON读取到Spring config bean中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64408856/