Как установить пользовательский Джексон ObjectMapper с Spring Cloud Netflix притвориться
Я сталкиваюсь со сценарием, в котором мне нужно определить одноразовый @FeignClient для стороннего API. В этом клиенте я хотел бы использовать пользовательский объект Jackson ObjectMapper, который отличается от моего @ Primary. Я знаю, что можно переопределить параметры конфигурации симуляции spring по умолчанию, однако мне не ясно, как просто переопределить ObjectMapper только этим конкретным клиентом.
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