Я использую 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
Но они определены как MAP в профиле YAML для моего приложения (application-test.yaml):
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 с конкретными настройками ведения журнала
Но это не помогло мне.
Как я могу использовать новую версию, но получить тот же ответ, что и в старой версии? Если это невозможно, какой еще способ я могу предпринять?
EDIT
Я создал демонстрационный проект, чтобы проиллюстрировать проблему - клонируйте его отсюда:
весна-облако-конфиг-сервера демо
(для конфигурации используется следующий git backend: spring-cloud-config-server-configurations )
Когда демонстрационный сервер запущен и работает, запросите его следующим образом:
curl http://localhost:8080/master/application-test.yaml
и вы получите эту ошибку:
java.lang.String cannot be cast to java.util.Map