스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다.

라이브러리 직접 선택시 발생하는 문제

웹 프로젝트를 하나 설정하기 위해서는 수 많은 라이브러리를 알아야 한다. 여기에 추가로 각각의 라이브러리의 버전까지 골라서 선택해야 한다. 여기서 눈에 보이지 않는 가장 어려운 문제는 각 라이브러리들 간에 서로 호환이 잘 되는 버전도 있지만 호환이 잘 안되는 버전도 있다는 점이다. 개발자가 라이브러리의 버전을 선택할 때 이런 부분까지 고려하는 것은 매우 어렵다.

dependencies {
		 //1. 라이브러리 직접 지정
		 //스프링 웹 MVC
		 implementation 'org.springframework:spring-webmvc:6.0.4'
		 //내장 톰캣
		 implementation 'org.apache.tomcat.embed:tomcat-embed-core:10.1.5'
		 //JSON 처리
		 implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.1'
		 //스프링 부트 관련
		 implementation 'org.springframework.boot:spring-boot:3.0.2'
		 implementation 'org.springframework.boot:spring-boot-autoconfigure:3.0.2'
		 //LOG 관련
		 implementation 'ch.qos.logback:logback-classic:1.4.5'
		 implementation 'org.apache.logging.log4j:log4j-to-slf4j:2.19.0'
		 implementation 'org.slf4j:jul-to-slf4j:2.0.6'
		 //YML 관련
		 implementation 'org.yaml:snakeyaml:1.33'
}

스프링 부트 라이브러리 버전 관리

스프링 부트는 개발자 대신에 수 많은 라이브러리의 버전을 직접 관리해준다. 이제 개발자는 원하는 라이브러리만 고르고 라이브러리의 버전은 생략해도 된다. 그러면 스프링 부트가 부트 버전에 맞춘 최적화된 라이브러리 버전을 선택해준다.

버전 관리 기능을 사용하려면 io.spring.dependency-management 플러그인을 사용해야 한다

io.spring.dependency-management 플러그인을 사용하면 spring-boot-dependencies 에 있는 다음 bom 정보를 참고한다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.0.2'
	id 'io.spring.dependency-management' version '1.1.0'
}

그리고 스프링 부트가 해당 스프링 부트 버전에 맞는 각 라이브러리의 호환성을 테스트 했기 때문에 안전하게 사용할 수 있다

다음에는 라이브러리를 자체를 고르는 고민을 줄여주는 스프링 부트 스타터에 대해서 알아보자.

스프링 부트 스타터

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

스프링 부트 스타터 - 이름 패턴