본문 바로가기

[Spring Boot] 스프링 부트 3.x 업그레이드 Apache HttpClient 문제 해결

다프트 코더 2024. 10. 21.
반응형

Spring Boot 2.X 버전에서는 오류 없이 정상적인 코드였는데 Spring Boot 3.X 버전으로 업그레이드를 하니 오류가 발생하는 부분이 많이 발생한다. 그중에서 Apache HttpClient 관련 오류에 대해서 포스팅한다.

1. Apache HttpClient 지원 제거

Spring Boot 3.x 부터는 Apache HttpClient에 대한 지원이 제거되면서 org.apache.httpcomponents.client5 라이브러리로 변경되었다.

CloseableHttpClient closeableHttpClient;
HttpClient httpClient = null;

HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
if (closeableHttpClient != null) {
    httpComponentsClientHttpRequestFactory.setHttpClient((HttpClient) closeableHttpClient);
}

그래서 기존 소스에서 CloseableHttpClient 객체를 Httplent로 Cast 시 오류가 발생하게 된다.

2. Apache Httpcomponents Client5 추가

프로젝트에 Apache Httpcomponents Client5 라이브러리 의존성을 주입하자.
https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5

Maven 의존성 주입

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 -->
<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.4</version>
</dependency>

Gradle 의존성 주입

// https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5
implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.4'

3. 코드 수정

HttpComponentsClientHttpRequestFactory 클래스를 생성할 때 client5로 Cast 해서 생성하니 오류가 사라졌다. 

CloseableHttpClient closeableHttpClient = null;
HttpClient httpClient = null;

HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory = 
        new HttpComponentsClientHttpRequestFactory((org.apache.hc.client5.http.classic.HttpClient) httpClient);
if (closeableHttpClient != null) {
    httpComponentsClientHttpRequestFactory
            .setHttpClient((org.apache.hc.client5.http.classic.HttpClient) closeableHttpClient);
}

이 방법은 임시방편이고 나중이 기회가 되면 Apache Httpcomponents client5 라이브러리를 이용해 해당 코드를 다시 구현해 봐야겠다.

반응형

댓글