스프링의 라이브러리에 대하여 배우는 회차이다.
감을 잡는다고 생각하고 편하게 들으라고 하셨다. 자세한 것은 해보면서 익혀가면 된다고 하심.
의존 관계(Dependencies)
build.gradle 파일을 열어서 dependencies를 보면,
우리가 스프링 부트에서 지정해줬던 Thymeleaf와 web, 그리고 자동으로 땡겨와진 test 총 세 개의 라이브러리가 보인다.
그런데 왼쪽 레포지토리에서 External Library를 열어보면? 엄청나게 많은 외부 라이브러리들이 보인다. 요즘 웹 앱 하나 만드려면 기본으로 이 정도는 다 사용해야 한다고 한다.
내가 명시적으로 가져온 것은 두 가지(test까지 하면 세 가지)밖에 없는데 실제로 가져와진 External Library가 왜 이렇게 많을까? 그것은 스프링에서 라이브러리들 사이의 의존 관계를 알아서 관리해주기 때문이다.
말하자면, 내가 필요하다고 명시한 A 라이브러리를 사용하기 위해 필수인 다른 라이브러리들 B, C가 있다면 스프링이 자동으로 B와 C까지 다 가져와준다는 것이다. 이때 B가 의존하고 있는 또 다른 라이브러리 D가 있으면 그것도 가져오고, 또 D가 의존하고 있는 라이브러리 E가 있으면 E도 가져오고... 이런 식으로 연속적으로 존재하는 관계까지 고려하여 사용에 문제가 없도록 다 세트로 가져온다.
강사님이 예로 들어준 라이브러리는 web을 사용하는 데 필요한 tomcat이었다. 우리가 tomcat을 가져오겠다고 직접 명시한 적은 없지만 web과 tomcat 사이 필수적인 의존관계가 있기 때문에 스프링이 알아서 tomcat까지 가져왔다.
오른쪽에서 Gradle을 눌러 라이브러리들을 살펴볼 수 있다. 하나를 열면 그 아래에 걔랑 관련된 다른 라이브러리들이 쭉 뜨고, 또 거기서 하나를 골라서 열면 그놈이랑 관련된 라이브러리들이 뜨고... 굉장히 많다. 캡처에서는 web 이하의 tomcat을 살펴보고 있다.
(*)은 중복을 의미한다. 여기서도 의존관계가 있고 저기서도 의존관계가 있는 놈이라는 뜻이다. 별 붙은 놈을 목록의 위쪽에서 쭉 찾아보면 똑같은 게 또 있는 것을 볼 수 있다.
tomcat은 웹 서버와 관련된 라이브러리인 것 같다. 고대의 선배님들 때에는 tomcat이 이렇게 내장되는 기술이 없었어서 서버를 따로 마련한 뒤에 거기다가 자바 코드를 집어넣는 식으로 작업했다고 한다. 그런데 이제는 이렇게 소스의 라이브러리에 내장형(embedded) 서버가 있어서 IDE에서 코드 실행만 눌러도 서버가 짠 실행되는 편리한 세상이 되었다고 한다. 서버와 관련된 각종 설정을 만질 필요도 없어졌다.
로깅 관련 라이브러리
오류 등을 추적하기 위해서는 System.out.println()보다 로그를 사용하는 것이 좋다고 한다. 학생 때까지는 System.out.println()을 많이 쓰지만 실무에서는 거의 다 로깅으로 한다고 한다.
이와 관련된 라이브러리로 logback과 slf4j을 알려주셨다.
테스트 관련 라이브러리
spring-boot-start-test라는 라이브러리 안에는 테스트와 관련된 라이브러리들이 들어있다고 한다. 아래는 강사님이 적어주신 라이브러리들을 대충 찾아서 열어본 화면이다.
junit: 테스트 프레임워크
mockito: 목 라이브러리
assertj: 테스트 코드를 좀 더 편하게 작성하도록 도와주는 라이브러리
spring-test: 스프링 통합 테스트 지원
'스프링 공부 > 인프런 김영한 스프링 입문 노트정리' 카테고리의 다른 글
2-1. 정적 컨텐츠 (0) | 2022.07.24 |
---|---|
1-4. 빌드하고 실행하기 (0) | 2022.07.23 |
1-3. View 환경설정 (0) | 2022.07.23 |
1-1. 프로젝트 생성 (0) | 2022.07.22 |
0. 강의 소개 (0) | 2022.07.19 |