サードパーティのAPI用に1回限りの@FeignClientを定義する必要があるシナリオに遭遇しています。このクライアントでは、@ Primaryのものとは異なるカスタムJacksonObjectMapperを使用したいと思います。 Springの偽の構成のデフォルトをオーバーライドできることは知っていますが、この特定のクライアントだけでObjectMapperを単純にオーバーライドする方法はわかりません。
documentation に従って、以下に示すように、Feignクライアントにカスタムデコーダーを提供できます。
偽のクライアントインターフェイス:
@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;
}
}
@ NewBieの答えに従ってください、私はより良いものを与えることができます...
@Bean
public Decoder feignDecoder() {
return new JacksonDecoder();
}
feignクライアントでjacksonメッセージコンバーターを使用する場合は、JacksonDecoderを使用してください。SpringDecoderはfeignclient呼び出しの平均遅延を増加させるためです本番環境で。