我们做一个bean和Autowire OkHttpClient


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 发出发布请求。 我在课堂上多次使用这个。 是否可以在我的类中制作OKhttpClient的bean并自动连线

请回复!!提前感谢

您可以通过在配置中的某个位置声明一个 bean 来做到这一点:

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

此外,如果没有另行声明,则默认情况下每个春豆都是单例:https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html

关于最初的问题。我认为你应该宣布它是春豆。它应该简化测试。

我会将其声明为 Spring bean,因为与单例解决方案相比,这使得测试更容易。但是,由于您使用的是 Spring 引导,您也可以只使用RestTemplate,如下所述:https://spring.io/guides/gs/consuming-rest/

下面定义的单例应该就足够了:

public class OkHttpFactory {
private static OkHttpClient client = new OkHttpClient();
public OkHttpClient getClient() {
return client;
}
}

最新更新