김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 정리
Gradle은 빌드 도구 이상의 가치를 제공합니다. 단순히 빌드만 하는 것이 아니라, 라이브러리 간 의존성 관계를 분석하여 필요한 모든 라이브러리를 함께 다운로드하고 관리합니다.
즉, 우리가 단 하나의 라이브러리만 명시하더라도, 실제 빌드시에는 그 라이브러리가 필요로 하는 다른 라이브러리들까지 체계적으로 가져옵니다. 이를 Transitive Dependency(전이적 의존성) 관리라고 합니다.
이 방식 덕분에 현대 개발자는 더 이상 복잡한 라이브러리 충돌 문제에 직접 머리를 싸맬 필요가 없어졌습니다.
프로젝트에 기본 추가되는 라이브러리들을 살펴보겠습니다.
| 라이브러리 | 설명 |
|---|---|
spring-boot-starter-web | 스프링 MVC + REST API 개발을 위한 스타터 패키지 |
spring-boot-starter-tomcat | 내장형 톰캣 서버 (서버 별도 설치 없이 실행 가능) |
spring-webmvc | 전통적인 스프링 웹 MVC 아키텍처 제공 |
| 라이브러리 | 설명 |
|---|---|
spring-boot-starter-thymeleaf | 서버 사이드 렌더링을 위한 타임리프 통합 지원 |
| 라이브러리 | 설명 |
|---|---|
spring-boot-starter | 스프링 부트 기반 애플리케이션의 핵심 구성요소 집합 |
spring-boot | 스프링 부트 프레임워크 자체 |
spring-core | 스프링 프레임워크의 핵심 기능 (DI, AOP 등) |
| 라이브러리 | 설명 |
|---|---|
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 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