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