Как определить, какой http-клиент по умолчанию был внедрен контейнером Spring для @FeignClient?

Я использую аннотацию @FeignClient. Я хочу знать, какой httpclient был введен Spring, когда я запускаю свое приложение.

Например, симметричные клиенты OkHttpClient и ApacheHttpClient можно использовать, установив для feign.okhttp.enabled или feign.httpclient.enabled соответственно значение true и указав их в пути к классам.

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@FeignClient(name = "service", path = "/api/v1", configuration = ServiceConfiguration.class)
public interface ServiceClient {

    @RequestMapping(method = RequestMethod.GET, value = "/test/{param1}", consumes = MediaType.APPLICATION_JSON_VALUE)
    String test(@PathVariable("param1") String param);
}

Сейчас я не уверен, какой из этих клиентов вводится, поскольку мое приложение является сложным с несколькими библиотеками httpclient в пути к классам.

Есть ли способ, которым я могу контролировать это?

Я включил JMX и попытался просмотреть Mconans jconsole, а информация о httpclients отсутствовала.

1 ответ

Согласно предыдущему ответу, теперь я вижу эту строку в FeignAutoConfiguration.java

@ConditionalOnProperty(value = "feign.httpclient.enabled", matchIfMissing = true)

Таким простым ответом будет Apache Client по умолчанию, если вы не добавите никаких свойств

Невозможно сказать, не увидев настройки Spring, особенно если ваше приложение сложное, как вы сказали.

Так как вы используете аннотации Spring, чтобы объявить @FeignClient вы скорее всего зависите от spring-cloud-netflix-core, Если вы включаете значения по умолчанию с @EnableFeignClients Взгляни на FeignAutoConfiguration учебный класс. Этот класс регистрирует фактический компонент клиента HTTP. Если вы добавите оба feign.httpclient.enabled а также feign.okhttp.enabled свойства (что IMO странная установка) попробуйте отладку FeignAutoConfiguration чтобы увидеть, какой Client feignClient() bean будет зарегистрирован в контексте Spring.

В качестве альтернативы включите проводное ведение журнала во всех клиентских библиотеках HTTP и посмотрите, какая из них фактически выполняет запрос на основе журналов.

Другие вопросы по тегам