Skip to Content
Suffering builds character

7.전이 의존성

SLF4J 라이브러리 및 로깅 구현체로 Log4j2를 사용하기 위해서는 SLF4J 의존성 설치 뿐만 아니라 Log4j2 라이브러리와의 브릿지 역할을 수행하는 별도의 라이브러리도 필요했었음

1-1. SLF4J에 필요한 의존성

slf4j-api-2.0.6.jar

1-2. Log4j2에 필요한 의존성

  1. log4j-api-2.17.1.jar
  2. log4j-core-2.17.1.jar
  3. log4j-slf4j2-impl-2.20.0.jar
    SLF4J와 Log4j2 사이의 브릿지 역할 수행을 위한 전이 의존성(Transitive dependencies)

또한 애플리케이션이 정상적으로 동작하기 위해서는 설치한 각각의 라이브러리들 간에 내부적으로 의존하는 의존 관계가 문제 없이 호환되어야하는데, 이러한 부분에 있어서 버전이 제대로 동기화되지 않으면 문제는 더 복잡해짐

2. 스프링 부트의 의존성 관리 방식

스프링 부트는 애플리케이션 개발에 필요한 의존성들을 각각의 역할에 맞게 그룹지어서 관리하며, 이렇게 그룹화된 의존성들은 아래와 같이 일련의 네이밍 규칙을 가지고 있음

spring-boot-starter-{의존성 이름}

2-1. spring-boot-starter-web

스프링 부트 기반으로 웹 애플리케이션 개발 시 필요한 의존성으로 spring initializr에서 간단하게 추가할 수 있으며, 웹 애플리케이션 개발에 필요한 여러 의존성들이 한 번에 설치됨

각 의존성들은 스프링 부트에 의해 자동으로 테스트가 완료되어 호환이 가능한 버전들만으로 구성됨

이러한 starter-web 의존성 안에는 아래와 같은 의존성들이 포함되어 있음
webmvc, tomcat, logger, json 등

이처럼 스타터 의존 관계는 다른 스타터 의존 관계를 포함할 수 있음

또한 이러한 스프링 부트 스타터는 확장 가능하며, 스프링이 제공하는 부분 외에 개발자가 직접 커스텀 스타터 모듈을 만들어 사용할 수 있으며, 팀 단위 혹은 대규모 애플리케이션에서 의존관계를 직접 모듈화하여 관리할 수도 있음

2-2. spring-boot-starter-test

스프링 부트 기반의 애플리케이션을 테스트하기 위해 필요한 의존성 묶음

Last updated on