엄지월드

@EnableConfigServer가 import 안되는 현상 (Spring Cloud BOM 적용) 본문

java/Spring

@EnableConfigServer가 import 안되는 현상 (Spring Cloud BOM 적용)

킨글 2024. 7. 6. 12:35

배경 : Spring Cloud Config를 사용하기 위해서 dependencies를 추가했지만, @EnableConfigServer가 import 되지 않았다. 

dependencies {    
    implementation 'org.springframework.cloud:spring-cloud-config-server'
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer // 추가하고 싶은 부분 
public class TravelApplication {
	public static void main(String[] args) {
		SpringApplication.run(TravelApplication.class, args);
	}
}

 

gradle build를 돌려보니 아래와 같이 에러가 났다. 

 

캐시 삭제를 해도 동일했다.

./gradlew clean build --refresh-dependencies

 

해결

찾아보니, Spring Cloud BOM(Bill of Materials)을 적용하면 문제를 해결할 수 있다고 했다. 

그래서 적용해보니, 정상적으로 import가 되고 build가 될 수 있었다. 

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.4" // 원하는 Spring Cloud 버전으로 변경
    }
}

dependencies {
    ...
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.cloud:spring-cloud-config-server'
    ...
}

 

Spring Cloud BOM(Bill of Materials) 를 사용하는 이유를 찾아보니

의존성 관리가 더 쉬워지고, 특히 호환성 문제가 해결될 수 있다고 한다. Spring Cloud BOM은 특정 Spring Cloud 릴리스에 대해 검증된 의존성 버전 세트를 제공하고, 이를 통해 각 라이브러리 간의 호환성을 보장하고, 버전 충돌 문제를 방지할 수 있다.

즉, 아래와 같다. 
1. 의존성 버전 관리: Spring Cloud BOM을 사용하면 Spring Cloud 프로젝트와 관련된 모든 의존성의 버전을 일관되게 설정할 수 있다. 이를 통해 특정 버전 간의 호환성 문제를 피할 수 있다. 

2. 버전 충돌 방지: 프로젝트에서 사용하는 여러 라이브러리 간에 버전 충돌이 발생할 수 있다. BOM을 사용하면 이러한 충돌을 방지할 수 있다. 

3. 자동 업데이트: BOM을 사용하면 특정 버전에 대한 의존성들이 자동으로 업데이트되므로, 최신 수정 사항 및 보안 패치가 적용된 버전을 사용할 수 있다. 

Comments