У меня есть открытые симулированные клиентские конфигурации Spring, подобные следующим:
public class AppFeignConfiguration
{
@Bean
public ErrorDecoder errorDecoder()
{
return new FeignErrorDecoder();
}
@Bean
public Logger.Level logger()
{
return Logger.Level.FULL;
}
@Bean
public Request.Options options()
{
return new Request.Options( 30000, 30000 );
}
}
, и я предоставляю его как конфигурацию в @FeignClient
как следующую
@FeignClient ( value = "apigateway-service", configuration = AppFeignConfiguration.class)
Я считаю, что FeignClient имеет конфигурацию по умолчанию для десериализации ответа (возможно, ObjectMapper с некоторыми свойствами).
Пока все хорошо. Все работало, как и ожидалось.
Затем я создал пользовательский объектный преобразователь и возвратил его в виде компонента, подобного следующему:
@Configuration
public class ObjectMapperConfig
{
@Bean ( name = "plainObjectMapper")
public ObjectMapper plainObjectMapper()
{
return new ObjectMapper();
}
}
Теперь проблема в том, что это связано с десериализацией по умолчанию конфигурации FeignClient
.
То есть без пользовательского plainObjectMapper
он работал нормально, без ошибок синтаксического анализа json. Но после создания пользовательского plainObjectMapper
в виде bean-компонента FeignClient
выдает исключения, сообщающие о неизвестных свойствах или о чем-то.
nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "xyz" (class abc.def.ghi.class), not marked as ignorable; nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
Я подтвердил это, удалив пользовательский plainObjectMapper
, и он работал нормально так же, как это раньше.
Это кажется странным! Я дал бобу собственное имя, которое не должно мешать бину, созданному springboot.
Как мне преодолеть этот конфликт?