라이브러리 살펴보기

숭맹이·2025년 4월 21일

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 정리

Gradle과 의존성 관리

Gradle은 빌드 도구 이상의 가치를 제공합니다. 단순히 빌드만 하는 것이 아니라, 라이브러리 간 의존성 관계를 분석하여 필요한 모든 라이브러리를 함께 다운로드하고 관리합니다.

즉, 우리가 단 하나의 라이브러리만 명시하더라도, 실제 빌드시에는 그 라이브러리가 필요로 하는 다른 라이브러리들까지 체계적으로 가져옵니다. 이를 Transitive Dependency(전이적 의존성) 관리라고 합니다.

이 방식 덕분에 현대 개발자는 더 이상 복잡한 라이브러리 충돌 문제에 직접 머리를 싸맬 필요가 없어졌습니다.


스프링 부트 주요 라이브러리 분석

프로젝트에 기본 추가되는 라이브러리들을 살펴보겠습니다.

1. 웹 개발 관련

라이브러리설명
spring-boot-starter-web스프링 MVC + REST API 개발을 위한 스타터 패키지
spring-boot-starter-tomcat내장형 톰캣 서버 (서버 별도 설치 없이 실행 가능)
spring-webmvc전통적인 스프링 웹 MVC 아키텍처 제공

2. 템플릿 엔진

라이브러리설명
spring-boot-starter-thymeleaf서버 사이드 렌더링을 위한 타임리프 통합 지원

3. 공통 인프라

라이브러리설명
spring-boot-starter스프링 부트 기반 애플리케이션의 핵심 구성요소 집합
spring-boot스프링 부트 프레임워크 자체
spring-core스프링 프레임워크의 핵심 기능 (DI, AOP 등)

4. 로깅

라이브러리설명
spring-boot-starter-logging기본 로깅 설정 (SLF4J + Logback 조합)
logback빠르고 강력한 로깅 구현체
slf4j다양한 로깅 구현체를 추상화하는 인터페이스

Note:
개발자라면 System.out.println 대신 Logger를 통해 로그를 남겨야 합니다. 심각도에 따라 로그를 관리할 수 있고, 파일로 저장하거나 다양한 핸들러를 통해 외부 전송이 가능합니다.


테스트 관련 라이브러리

테스트 기본 구성

라이브러리설명
spring-boot-starter-test테스트에 필요한 대부분의 의존성을 포함하는 스타터
junit가장 널리 쓰이는 자바 테스트 프레임워크 (현재 JUnit 5가 표준)
mockito객체를 목(mock)으로 만들어 테스트하는 라이브러리
assertj보다 유연하고 가독성 좋은 Assertion 지원
spring-test스프링 컨텍스트와 통합된 테스트 지원

JUnit 5로의 전환

기존에는 JUnit 4를 주로 사용했지만, 최근에는 JUnit 5 (Jupiter)를 중심으로 빠르게 전환되고 있습니다.
JUnit 5는 확장성, 모듈화, 자바 8 이상 친화적 API를 제공합니다.


한눈에 보는 주요 흐름

spring-boot-starter-web
    └── spring-boot-starter-tomcat (Embedded Tomcat)
    └── spring-webmvc

spring-boot-starter-thymeleaf
    └── thymeleaf

spring-boot-starter
    └── spring-core
    └── spring-boot
    └── spring-boot-starter-logging
        └── logback
        └── slf4j

spring-boot-starter-test
    └── junit
    └── mockito
    └── assertj
    └── spring-test
profile
👨🏻‍💻 Backend Developer

0개의 댓글