728x90
반응형
문제 발생
작업하는 스프링부트 프로젝트에는 여러개의 모듈이 있다. 그 중 share 모듈을 auth 모듈에서 사용할 수 있도록 아래와 같이 dependencies에 추가했다.
// auth 모듈의 build.gradle.kts
dependencies {
implementation(project(":share"))
implementation("io.awspring.cloud:spring-cloud-starter-aws-secrets-manager-config:2.4.4")
}
// share 모듈의 build.gradle.kts
val springCloudAwsVersion = "3.2.1"
dependencies {
implementation(platform("io.awspring.cloud:spring-cloud-aws-dependencies:${springCloudAwsVersion}"))
}
이후에 auth를 run시켜보면 아래와 같이 에러가 발생한다.
08:07:44.497 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed
java.lang.IllegalArgumentException: Unable to instantiate factory class [org.springframework.cloud.bootstrap.BootstrapConfigFileApplicationListener] for factory type [org.springframework.boot.env.EnvironmentPostProcessor]
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/config/ConfigFileApplicationListener
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.config.ConfigFileApplicationListener
원인
이 에러 로그만 보고 원인을 파악하기란 쉽지 않다. 에러 원인은 Spring Cloud 버전과 Spring Boot 버전이 호환되지 않을 때 발생한다.
- 에러 로그에 나타나는 BootstrapConfigFileApplicationListener는 예전 Spring Cloud 버전에서 사용하는 클래스
- 위 클래스가 의존하고 있는 ConfigFileApplicationListener는 Spring Boot 2.4까지 존재하다가 Spring Boot 2.4 이후로 제거
내 프로젝트에 적용하면, spring-cloud-starter-aws-secrets-manager 2.x 버전이 Spring Boot 3.x 와 호환되지 않기 때문이다. share 모듈에서 io.awspring.cloud:spring-cloud-aws-dependencies:3.2.1 을 platform으로 선언했지만, 루트 프로젝트인 auth 모듈에서 BOM을 지정하지 않으면 의존성 버전 관리가 불안정해진다. auth 모듈도 Spring Cloud 관련 BOM 없이 Spring Boot 3.3.3만 쓰고 있어 버전 충돌이 발생되었던 것이다.
해결
auth 모듈의 io.awspring.cloud:spring-cloud-starter-aws-secrets-manager-config를 3.x 버전에 맞게 업그레이드하면 해결된다.
// auth 모듈의 build.gradle.kts
dependencies {
implementation(project(":share"))
implementation("io.awspring.cloud:spring-cloud-aws-starter-secrets-manager:3.3.1")
}
728x90
반응형
'Spring' 카테고리의 다른 글
잘못된 분석은 무엇으로부터 시작될까 (1) | 2023.10.24 |
---|---|
application.yml에서 AWS 환경변수를 지워도 동작하는 이유 (0) | 2023.08.24 |
내가 만든 라이브러리/모듈을 로컬에서 사용하기 (0) | 2023.08.07 |
엑셀 다운로드시 암호화를 하고 싶다면? (0) | 2023.08.07 |
AWS SQS와 EventBridge를 활용한 스케줄러 만들기 (0) | 2023.06.27 |
Comment