サードパーティ 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;
}
}