본문 바로가기
Java/SpringBoot

[SpringBoot] 3.x 버전 마이그레이션 RestTemplate 오류 해결

by 리요_ 2024. 8. 5.
반응형

 

SpringBoot 2.x 버전의 프로젝트를 SpringBoot 3.x 버전으로 마이그레이션 하면서 발생한 오류입니다.

 

The method setReadTimeout(int) is undefined for the type HttpComponentsClientHttpRequestFactoryJava(67108964)

Cannot resolve method 'setReadTimeout' in 'HttpComponentsClientHttpRequestFactory'

오류 발생

 

 

RestTemplate 부분의 setReadTimeout 에서 오류가 발생하였습니다.


오류 상세

 

HttpComponents ClientHttpRequestFactory 유형에 대해 메서드 setReadTimeout(int)이 정의되지 않았습니다.

 

해당 코드는 Spring Boot 2.x 버전에서 사용하던 코드로, Spring Boot 3.x 버전에서는 사용할 수 없습니다.

Srping Framework 6.0 버전부터 Apache HttpClient 에 대한 지원이 종료되면서 

org.apache.httpcomponents.clients.clien5:httpclient5 라이브러리로 대체되었습니다.


오류 해결

HttpComponentsClientHttpRequestFactory 클래스에서 설정하던 readTime, connectTimeout

HttpClientConnectionManager 클래스를 통해 timeout 을 설정하고, HttpClient 에 주입하여 사용할 수 있습니다.

 

의존성 추가

// Gradle
implementation 'org.apache.httpcomponents.client5:httpclient5:5.3.1'
// Maven
<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.3.1</version>
</dependency>

 

작성일 기준 저는 5.3.1 버전을 사용하였습니다.

https://mvnrepository.com/

메이븐 레포지토리에서 필요한 버전으로 사용하면 됩니다.

코드 수정

import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.core5.util.Timeout;
import org.apache.hc.client5.http.config.RequestConfig;

 

새로 사용할 클래스들을 import 해주었습니다.

 

CloseableHttpClient 를 사용하여 Http 클라이언트를 생성하고, RequestConfig 를 통해 연결 및 응답 타임아웃을 설정했습니다.

 

setConnectTimeoutsetResponseTimeout 메서드를 사용하여 각각 연결 타임아웃과 응답 타임아웃을 설정했습니다.

 

setConnectTimeout 부분에도 선이 그어져 있는데, 향후 버전에서 제거될 가능성이 있어 deprecated 된 모습입니다.

 

 

setConnectTimeout 은 기존 그대로 두고 setResponseTimeout 만 마이그레이션 하는 경우 deprecated  처리가 되진 않습니다.. 이 무슨 불편한..

 

3.x 버전이 아직 안정적으로 사용되고 있지 않고, 향후 변경 가능성이 있어서 조만간 다시 바꿔야 할지도 모르겠습니다..

 

 

저는 우선 이렇게 사용하는 것으로 마이그레이션을 마치겠습니다.

 

참고

https://hc.apache.org/httpcomponents-client-5.3.x/migration-guide/preparation.html

 

 

반응형

'Java > SpringBoot' 카테고리의 다른 글

[SpringBoot] Spring Cloud OpenFeign 생성하기  (1) 2024.10.05
[Spring Boot] StringUtilClass  (0) 2024.09.29
[Spring Boot] FTP Server 구현하기  (2) 2024.09.28