Spring Cloud Netflix FeignでカスタムJackson ObjectMapperを設定する方法 質問する

Spring Cloud Netflix FeignでカスタムJackson ObjectMapperを設定する方法 質問する

サードパーティ API 用に 1 回限りの @FeignClient を定義する必要があるシナリオに遭遇しています。このクライアントでは、@Primary とは異なるカスタム Jackson ObjectMapper を使用したいと思います。Spring の feign 構成のデフォルトをオーバーライドできることはわかっていますが、この特定のクライアントだけで ObjectMapper をオーバーライドする方法がわかりません。

ベストアンサー1

によるとドキュメンテーション次のように、Feign クライアントにカスタム デコーダーを提供できます。

Feignクライアントインターフェース:

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

Feign クライアントのカスタム構成:

@Configuration
public class FooClientConfig {

    @Bean
    public Decoder feignDecoder() {
        HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(customObjectMapper());

        HttpMessageConverters httpMessageConverters = new HttpMessageConverters(jacksonConverter);
        ObjectFactory<HttpMessageConverters> objectFactory = () -> httpMessageConverters;


        return new ResponseEntityDecoder(new SpringDecoder(objectFactory));
    }

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

おすすめ記事