Спустя некоторое время, потраченное на отладку кода библиотеки Spring WebFlux / Jackson, я наконец смог найти подсказку для решения проблемы, глядя на реактивный WebFlux WebClient docs . Для того чтобы WebClient использовал автоматически настраиваемый Jackson ObjectMapper по умолчанию, требуется некоторая пользовательская сантехника. Решение заключается в настройке декодера по умолчанию, используемого для обработки отправленных сервером событий при создании нового экземпляра WebClient. Вот пример кода:
@Component
public class MarketDataFetcher implements CommandLineRunner {
// ...
private final WebClient webClient;
public MarketDataFetcher(ObjectMapper objectMapper) {
webClient = createWebClient(objectMapper);
}
private WebClient createWebClient(ObjectMapper objectMapper) {
return WebClient.builder()
.codecs(configurer -> configurer.defaultCodecs()
.serverSentEventDecoder(new Jackson2JsonDecoder(objectMapper)))
.baseUrl(BASE_URL)
.build();
}
}
ObjectMapper
автоматически внедряется Spring, поэтому аннотация @Autowired
не требуется.
Конечно, было бы полезно сделать это более явным в официальной документации как-то. Надеюсь, что этот ответ может быть полезен для тех, кто сталкивается с подобной проблемой!