Я обновляю приложение до 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».
Любая идея о том, как исследовать этот вид проблемы?




Итак, после нескольких часов борьбы я добился некоторого прогресса, и теперь приложение запускается, хотя основная причина проблемы мне не совсем ясна в настоящее время. Ниже приведены мои выводы:
Я заметил одну странную вещь: если я меняю 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
Если у кого-то есть методология быстрого решения такой проблемы, не стесняйтесь добавлять ее в комментарий или редактировать этот ответ.