Должны ли мы сделать боб и Autowire OkHttpClient - PullRequest
0 голосов
/ 21 сентября 2018
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "q=609&client=122&layer=explore&key=w3S4BEmDKd8Q3VCCO2OZTnI8sAQxIFwA&name=utkarsh%20sharma&password=utk&phone=1111111112");
Request request = new Request.Builder()
  .url("http://explore-uat.mapmyindia.in/explore-api/v1.3/")
  .post(body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Postman-Token", "44666246-b697-488f-9410-df09f7faa53a")
  .build();

Response response = client.newCall(request).execute();

Я использую этот код для отправки запроса в API.Я использую это много раз в моем классе.Можно ли сделать bean-компонент из OKhttpClient и autowire в моем классе

Пожалуйста, ответьте !! Спасибо заранее

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Я бы объявил его как Spring bean, поскольку это значительно облегчает тестирование по сравнению с решением Singleton.Однако, поскольку вы используете загрузку Spring, вы также можете просто использовать RestTemplate, как описано здесь: https://spring.io/guides/gs/consuming-rest/

0 голосов
/ 21 сентября 2018

Вы можете сделать это, объявив bean-компонент в вашей конфигурации:

@Configuration
public class HttpClientConfiguration {

    @Bean
    public OkHttpClient httpClient() {
        return new OkHttpClient();
    }
}

Кроме того, если не указано иное, каждый весенний bean-компонент по умолчанию является одиночным: https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html

По поводу первоначального вопроса.Я думаю, что вы должны объявить это как боб весны.Это должно облегчить тестирование.

0 голосов
/ 21 сентября 2018

Одного тона, как определено ниже, должно быть достаточно:

public class OkHttpFactory {

    private static OkHttpClient client = new OkHttpClient();

    public OkHttpClient getClient() {
        return client;
    }

}
...