이 글은 김영한 님의 Infrean 강의를 학습한 내용을 정리하여 작성합니다.
라이브러리 살펴보기
Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다.
처음 spring project를 생성할 때 우리가 설정한 Dependencies가 기억날 것이다.
확인해보면 템플릿 엔진으로서 동작할 thymeleaf,
spring web,
자동으로 추가된 test
세 가지만 존재한다.
하지만, 실제로 라이브러리를 확인해보면 다음과 같다.
우리가 가져온 라이브러리 이외에도 수많은 라이브러리들이 존재한다.
이러한 결과는 Gradle이 의존관계에 있는 모든 라이브러리들을 다운로드 하기 때문이다.
Maven이나 Gradle과 같은 빌드 툴들은 의존관계에 있는 라이브러리들을 모두 관리해준다.
IntelliJ 좌측 하단에 다음과 같은 아이콘을 클릭하면 우측에 메뉴바가 생길 것이다.
생성된 Gradle을 클릭해 보면 다음과 같은 창이 나타난다.
여기 존재하는 Dependencies가 라이브러리와의 의존 관계에 해당한다.
우리가 프로젝트 생성 시 가져온 라이브러리 두개가 존재한다.
spring-boot-starter-thymeleaf 내부를 확인해보면 또다른 라이브러리가 존재하는데 이 라이브러리들이 thymeleaf 라이브러리를 사용하기 위해 필요한 라이브러리들에 해당한다.
이런 식으로 Gradle은 의존관계에 해당하는 라이브러리들을 끝까지 파고 들어 해당하는 모든 라이브러리들을 가져오게 된다.
spring-boot-starter-logging 아래에 logback-classic과 slf4j 라이브러리가 존재한다.
이때 slf4j는 인터페이스에 해당하고 실제 log를 어떠한 구조체로 표현하기 위해 logback을 많이 사용한다.
실제 서버를 다루는 개발자들은 System.out.println() 함수를 거의 사용하지 않고 log() 함수를 주로 사용한다.
그래야 log 파일들을 따로 다룰 수 있기 때문이다.
log() 함수가 궁금하다면 slf4j와 logback을 검색해 알아보길 바란다.
또한 자바에서 test를 위해 JUnit 라이브러리를 사용한다.
그래서 spring에서도 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
테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원