Как установить пользовательский Джексон ObjectMapper с Spring Cloud Netflix притвориться



Я сталкиваюсь со сценарием, в котором мне нужно определить одноразовый @FeignClient для стороннего API. В этом клиенте я хотел бы использовать пользовательский объект Jackson ObjectMapper, который отличается от моего @ Primary. Я знаю, что можно переопределить параметры конфигурации симуляции spring по умолчанию, однако мне не ясно, как просто переопределить ObjectMapper только этим конкретным клиентом.

638   1  

1 ответ:

В соответствии с документацией , Вы можете предоставить пользовательский декодер для вашего клиента симуляции, как показано ниже.

Имитация Клиентского Интерфейса:

@FeignClient(value = "foo", configuration = FooClientConfig.class)
public interface FooClient{
    //Your mappings
}

Имитация Клиентской Пользовательской Конфигурации:

@Configuration
public class FooClientConfig {

    @Bean
    public Decoder feignDecoder() {
        HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(customObjectMapper());
        ObjectFactory<HttpMessageConverters> objectFactory = () -> new HttpMessageConverters(jacksonConverter);
        return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
    }

    public ObjectMapper customObjectMapper(){
        ObjectMapper objectMapper = new ObjectMapper();
        //Customize as much as you want
        return objectMapper;
    }
}

Comments

    Ничего не найдено.