강의 정리: 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
라이브러리 목록을 보면 우리가 build.gradle 에서 implementation으로 가져오지 않은 라이브러리들이 많은 것을 알 수 있다.


우리가 땡겨온 spring-boot-starter-web이라는 라이브러리는 tomcat, spring-web, spring-webmvc 와 같은 다른 라이브러리들을 필요한다. 이것으로 라이브러리 사이에도 서로 의존관계가 있다는 것을 알 수 있다.
Gradle은 이러한 의존관계가 있는 라이브러리들을 다 땡겨오게 된다. 그래서 우리가 가져오지 않아도 연쇄적인 의존 관계에 의해 spring-core 까지 수많은 라이브러리들이 땡겨와지게 되는 것이다.

인텔리제이의 오른쪽 화면의 Dependencies를 보면 라이브러리들 간의 의존성을 확인할 수 있다.
이전에는 서버에 톰캣을 직접 설치해서 사용했지만 요즘에는 라이브러리에서 웹서버를 내장하고 있기 때문에 실행만 해도 웹서버를 사용 가능하다.

slf4j는 인터페이스이고 실제 로그를 구현체로 출력하기 위해 사용하는 것은 logback이다. logback은 지원하는 기능도 많고 성능도 빠르기 때문에 많이 사용하여 스프링에서도 기본적으로 위의 두가지 조합을 제공하게 된다.

여러가지 테스트 라이브러리가 있지만 자바에서는 JUnit 라이브러리를 대부분 사용한다. 최근에 5버전으로 넘어가는 경우가 많다. 아래의 라이브러리들 중 핵심은 JUnit이고 나머지는 테스트를 편리하게 도와주는 라이브러리들이다.

스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진 (view)
- spring-boot-starter: (공통) 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core- spring-boot-starter-logging
- logback, slf4j
스프링 테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드 작성 도움 라이브러리
- spring-test: 스프링 통합 테스트 지원