Невозможно связать перечисление Zipkin в Spring Boot 2

Я обновляю приложение до Spring Boot 2.1.3 (с 1.5.x) и сталкиваюсь с проблемой во время запуска. Ниже блок не может быть связан должным образом:

  spring:
    zipkin:
      enabled: true
      base-url: http://myZipkinServer
      sender:
        type: web

Я получаю эту ошибку:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'spring.zipkin.sender.type' to org.springframework.cloud.sleuth.zipkin2.sender.ZipkinSenderProperties$SenderType:

Property: spring.zipkin.sender.type
Value: web
Origin: class path resource [application.yml]:68:13
Reason: 0

Action:

Update your application's configuration

Незадолго до того, как я получаю журнал WARN, сообщающий о проблеме:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.boot.context.properties.ConfigurationPropertiesBindException: Error creating bean with name 'spring.zipkin.sender-org.springframework.cloud.sleuth.zipkin2.sender.ZipkinSenderProperties': Could not bind properties to 'ZipkinSenderProperties' : prefix=spring.zipkin.sender, ignoreInvalidFields=false, ignoreUnknownFields=true; nested exception is org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.zipkin.sender.type' to org.springframework.cloud.sleuth.zipkin2.sender.ZipkinSenderProperties$SenderType

Я пытаюсь следовать отладке, и я довольно глубоко погрузился во внутренности Spring Boot. в org.springframework.boot.context.properties.bind.Binder . У меня есть похожее приложение с более или менее той же версией, для которой оно отлично работает. Я пытаюсь найти разницу, сравнить потоки выполнения, но не нахожу ничего очевидного.

В IntelliJ я получаю автозаполнение, поэтому я знаю, что мой yaml отформатирован правильно: мне предлагается значение «web».

Любая идея о том, как исследовать этот вид проблемы?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
326
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, после нескольких часов борьбы я добился некоторого прогресса, и теперь приложение запускается, хотя основная причина проблемы мне не совсем ясна в настоящее время. Ниже приведены мои выводы:

  • Я заметил одну странную вещь: если я меняю sender.type с web на rabbit, то приложение запускается без ошибок.

  • Я также нашел этот Spring Boot отчет о проблеме, очень похожий на мой, который указывал на ошибку JDK. И действительно, переход с jdk1.8.0_25 на jdk1.8.0_201 .

  • Наконец, я также обнаружил, что если я использовал jdk1.8.0_25 и вообще не предоставлял sender.type, то приложение также запускалось без проблем.

По какой-то причине в другом приложении, которое у меня есть и которое работает, я могу использовать jdk1.8.0_25 и sender.type: web

Если у кого-то есть методология быстрого решения такой проблемы, не стесняйтесь добавлять ее в комментарий или редактировать этот ответ.

Другие вопросы по теме