Spring Boot/스프링 입문 강의

Spring 입문 Chapter 1-2. 프로젝트 환경 설정 : 라이브러리 살펴보기

HEY__ 2022. 1. 31. 21:16
728x90

이 글은 인프런에 있는 김영한님의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 듣고 정리한 필기입니다.

 

⛅️ External Libraries 살펴보기

External Libraries

Project 창에서 "External Libraries"를 찾을 수 있는데, 이 External Libraries를 보면 우리가 가져온 라이브러리들이 무엇인지 볼 수 있다.

해당 폴더를 펼치면 어떤 라이브러리들이 포함되어 있는지 알 수 있다.

하지만 항목들이 너무 많기 때문에 뭐가 뭔지 알기가 힘들다.

이럴 때에는 Gradle 탭을 활용하면 좋다.

 


⛅️ Gradle 탭 살펴보기

Gradle 탭

Gradle 탭의 Dependencies를 보면 선택한 라이브러리를 볼 수 있다.

 

Denpendencies는 의존성이라는 뜻인데, gradle(maven)같은 애들이 의존 관계를 관리해준다. 이게 무슨 말일까?

Dependencies 항목을 열어보면 각 항목이 있는 것을 볼 수 있는데, 다시 그 항목을 열어보면 다른 항목들이 밑에 달려있는 것을 볼 수 있다.

상위 항목이 하위 항목에 의존한다. 즉, 필요로 한다라는 뜻이다. 이해가 잘 안된다면 예시를 통해 좀 더 알아보자.

 

예를 들어 spring-boot-starter-web을 열어보면 다음과 같이 다른 항목들이 있음을 볼 수 있다.

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 라이브러리이다.

728x90