我正在使用spring-cloud-config-server 1.2.2..RELEASE。
我需要将其更新为较新版本(例如1.4.4..RELEASE,但该问题也发生在最新版本中)。当我尝试更新版本并调用配置服务器的YAML端点(请求测试配置文件)时,我的一些属性出现错误(ClassCastException: java.lang.String cannot be cast to java.util.Map
。
这些属性在application.yaml中定义为LEAF:
logging.level.com.company: DEBUG
但是在我的应用程序特定配置文件YAML(application-test.yaml)上被定义为MAP:
logging.level.com.company.salesforce.editor.service: DEBUG
以前,我在响应YAML中输入了以下内容:
logging:
level:
com:
company: DEBUG
company.salesforce.editor.service: DEBUG
我调试了spring-cloud-config-server代码,发现发现EnvironmentController.java\convertToMap(Environment input, boolean resolvePlaceholders)()
中有一个重大更改(从1.2.x更改为1.3.x)可能导致了此错误。
我在类似的问题上发现了这个GitHub问题: ClassCastException with specific logging settings 但这对我没有帮助。
如何使用新版本,但得到的响应与旧版本相同?如果不可能的话,我可以采取的另一种行动方针是什么?
编辑
我已经创建了一个演示项目来说明问题-从此处克隆它:
spring-cloud-config-server-demo
(它使用以下git后端进行配置:spring-cloud-config-server-configurations)
演示服务器一旦启动并运行,就可以像这样查询它:
curl http://localhost:8080/master/application-test.yaml
,您将收到此错误:
java.lang.String cannot be cast to java.util.Map