Spring 입문 Chapter 1-2. 프로젝트 환경 설정 : 라이브러리 살펴보기
이 글은 인프런에 있는 김영한님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 듣고 정리한 필기입니다.
⛅️ External Libraries 살펴보기
Project 창에서 "External Libraries"를 찾을 수 있는데, 이 External Libraries를 보면 우리가 가져온 라이브러리들이 무엇인지 볼 수 있다.
해당 폴더를 펼치면 어떤 라이브러리들이 포함되어 있는지 알 수 있다.
하지만 항목들이 너무 많기 때문에 뭐가 뭔지 알기가 힘들다.
이럴 때에는 Gradle 탭을 활용하면 좋다.
⛅️ Gradle 탭 살펴보기
Gradle 탭의 Dependencies를 보면 선택한 라이브러리를 볼 수 있다.
Denpendencies는 의존성이라는 뜻인데, gradle(maven)같은 애들이 의존 관계를 관리해준다. 이게 무슨 말일까?
Dependencies 항목을 열어보면 각 항목이 있는 것을 볼 수 있는데, 다시 그 항목을 열어보면 다른 항목들이 밑에 달려있는 것을 볼 수 있다.
상위 항목이 하위 항목에 의존한다. 즉, 필요로 한다라는 뜻이다. 이해가 잘 안된다면 예시를 통해 좀 더 알아보자.
예를 들어 spring-boot-starter-web을 열어보면 다음과 같이 다른 항목들이 있음을 볼 수 있다.
spring-boot-starter-web을 보면 밑에 json, tomcat, spring-boot-starter, spring-web, spring-webmvc가 있다.
이는 spring-boot-starter-web을 사용하기 위해서는 위 항목들이 필요하다는 뜻이다.
이런 식으로 해당 기능을 사용하기 위해 다른 어떤 기능들이 필요한지 계층 구조로 보여준다.
중요한 항목을 몇 개 확인해보자.
1. spring-boot-starter-web을 열어보면 하위에 tomcat이 있다. tomcat은 웹 서버에 내장(embedded)되어 있다.
이전에는 웹 서버에 tomcat을 직접 설치했어야 했지만 현재는 따로 설정을 하지 않아도 된다.
2. spring boot starter web -> json -> web 에 들어가면 spring-core 또한 가져오고 있음을 알 수 있다.
⛅️ Log(로그)에 대하여
Java에서 텍스트를 출력할 때에 System.printout.ln을 사용하지만, 실무에서는 저 함수를 사용하는 것이 아니라 Log로 출력해야 한다.
WHY?
Log 파일을 따로 만들어야 심각한 에러들을 따로 모아보는 식으로 분류를 하여 로그 파일들을 관리할 수 있기 때문이다.
(실무에서는 로그를 사용하지만, 편의를 위해 본 강의에서는 System 함수를 사용할 예정)
Log를 편하게 해주는 라이브러리
spring-boot-starter-thymeleaf를 열어보면 spring-boot-starter-logging이 있다.
다시 이 항목을 열어보면 slf4j와 logback이라는 항목이 있다. slf4j는 인터페이스이고, 실제 로그를 어떤 구현체로 출력할까는 logback으로 선택한다. logback이 성능도 빠르고 지원하는 것들이 많다.
이 두 항목이 Log를 좀 더 편하게 사용할 수 있도록 도와준다.
⛅️ test와 관련된 라이브러리
test와 관련된 라이브러리들도 확인할 수 있다.
java에서 많이 사용하는 junit을 확인할 수 있는데, spring은 java기반이기 때문에 spring 또한 junit을 많이 사용한다.
mockito, assertj도 있는데, 이 항목들은 test를 편리하게 해주는 라이브러리들이다.
spring-test 항목도 확인할 수 있는데, 이 라이브러리는 spring과 통합해서 test할 수 있게 해주는 라이브러리이다.
핵심은 junit 라이브러리이다.