IT/Web

JAVA HttpClient와 CloseableHttpClient 차이점

코딩하는 너구리 2023. 2. 3. 13:54
반응형

 

Java에서 HTTP API를 개발하기 위해 HttpClient를 자주 사용했었는데

CloseableHttpClient 클래스가 새롭게 등장했다고 해서 처음 알게되었다.

CloseableHttpClient 클래스는 Apache HttpClient 4.3 이상에서 새롭게 추가된 클래스로, HttpClient 클래스의 문제점을 개선하여 구현이 간편하고 메모리 누수 등의 문제가 해결되었다고 한다.

따라서, 새로운 프로젝트에서는 CloseableHttpClient 클래스를 사용하는 것이 권고되고 있는데, 기존의 HttpClient 클래스와의 차이점을 정리해보면 다음과 같다.

 

생성 방식

  • DefaultHttpClient: HttpClient 인스턴스를 생성하는 것이 가능한 방법 중 가장 기본적인 방식입니다.
  • CloseableHttpClient: DefaultHttpClient의 기능을 확장하여 HttpClient 인스턴스의 생성을 지원하며, 각 Connection의 자원을 안정적으로 관리할 수 있는 메소드를 제공합니다.

 

close 메소드 사용 여부

  • DefaultHttpClient: close 메소드를 제공하지 않습니다.
  • CloseableHttpClient: close 메소드를 제공하여 HttpClient 인스턴스의 연결을 닫을 수 있습니다.

예제

CloseableHttpClient httpClient = HttpClients.createDefault();
try {
  HttpGet httpGet = new HttpGet("<http://www.google.com>");
  CloseableHttpResponse response = httpClient.execute(httpGet);
  // Do something with response
} finally {
  httpClient.close();
}

 

HTTP 통신 가능 회수

  • DefaultHttpClient: HTTP 통신을 계속 할 수 있습니다.
  • CloseableHttpClient: 각 Connection을 제대로 닫지 않으면 일정 횟수 이상 HTTP 통신이 불가능 할 수 있습니다.

 

Connection Pool 사용 여부

DefaultHttpClient와 CloseableHttpClient 모두 Connection Pool 기능을 제공

 

반응형

'IT > Web' 카테고리의 다른 글

PORT 포트번호란  (0) 2022.08.11
TCP란?  (0) 2022.08.10
IP(Internet Protocol)  (0) 2022.08.03
[Springboot/Gradle] JAVA SMTP로 비밀번호 찾기 메일 보내기(NAVER)  (0) 2021.01.03
@PostMapping과 @PutMapping의 차이  (0) 2020.10.15