S3와 Apache HttpClient 의존성 충돌

크리링·2024년 10월 1일
0

실무 트러블 슈팅

목록 보기
4/5
post-thumbnail

새로운 스프링 프로젝트에 S3 설정을 추가하면서 생기는 오류와 해결과정을 정리해본다.

프로젝트 환경

springBoot : 3.3.2
java : 17



S3 의존성 추가와 실행 실패

뭔가 알림 줄이 생긴거 같지만 무시하고 build gradle reload 원활히 성공

그러나 애플리케이션 실행시에

위와 같은 오류와 함께 애플리케이션 실행 실패



구글링을 통해서

원인은
apache http components 의존성과 spring cloud starter aws 의존성의 충돌 문제인데 좀 더 자세히 보면 S3 설정시 사용하는 HttpClient와 중복되는 이슈



해결 시도

1. AWS v2 버전 업데이트

같은 오류

2. AWS httpClient를 Netty로 변경

기존 HttpClient를 사용한 코드 수정 필요 (많은 변경 불가피) -> 보류

3. AWS httpClient 의존성에서 Apache HTTP 의존성 제외

같은 오류



해결

결국 Apache httpClient를 의존성 최신 버전으로 올리는게 해결 시도 2번 보다 더 변경이 적고, 기존 코드에 익숙한 면도 있어서 선택

build.gradle 의존성 수정

implementation group: 'org.apache.httpcomponents', name: 'httpclient', version:
'4.3.4'

-> 

implementation 'org.apache.httpcomponents.client5:httpclient5:5.1.3' 



httpClient 관련 일부 코드 수정

이 코드를 아래로 변경



실행 성공!






참고

AWS SDK for Java V1, V2 차이 / s3객체 업로드, 복사, 삭제 구현하기

0개의 댓글