我们可以制作一个 bean 并自动装配 OkHttpClient

UTK*_*RSH 6 spring spring-mvc spring-data spring-boot

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();
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码向 API 发出发布请求。我在课堂上多次使用这个。是否可以在我的类中制作 OKhttpClient 和 autowire 的 bean

请回复!!提前谢谢

sen*_*vic 5

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

@Configuration
public class HttpClientConfiguration {

    @Bean
    public OkHttpClient httpClient() {
        return new OkHttpClient();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

关于最初的问题。我认为你应该将其声明为春豆。它应该可以简化测试。


Mic*_*ger 1

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