13

サードパーティ API 用に 1 回限りの @FeignClient を定義する必要があるシナリオに直面しています。このクライアントでは、@Primary とは異なるカスタム Jackson ObjectMapper を使用したいと考えています。春の偽装構成のデフォルトをオーバーライドできることは知っていますが、この特定のクライアントだけで ObjectMapper を単純にオーバーライドする方法は明確ではありません。

4

4 に答える 4

37

ドキュメントに従って、以下に示すように、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());

        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;
    }
}
于 2016-03-09T05:21:51.420 に答える