project 셋팅을 하고 난 뒤에 build.gradle을 살펴보면 import한 라이브러리는 spring-boot-starter-web과 spring-boot-starter-thymeleaf 이 두가지 뿐이다. 하지만 자세히 import된 라이브러리들을 살펴보면 굉장히 많은 것을 볼 수 있다.
기본적으로 이렇게 구성되는 것을 기록해보았다.
External Dependencies(libraies)
gradle, maven은 빌드관리도구로 라이브러리의 의존관계를 다 관리해준다.
사진에서와 같이 gradle에는 spring-boot-starter-web과 thymeleaf 라이브러리만 import를 했는데,
external dependencies에 많은 라이브러리가 있는 것은 gradle에 import한 라이브러리가 사용되기 위해 내부적으로 필요한 라이브러리 전부를 모두 가져오기 때문이다. (의존관계가 있는 라이브러리를 함께 다운로드 한다.)
external dependencies에 많은 라이브러리가 있는 것은 gradle에 import한 라이브러리가 사용되기 위해 내부적으로 필요한 라이브러리 전부를 모두 가져오기 때문이다. (의존관계가 있는 라이브러리를 함께 다운로드 한다.)
org.springframework,boot:spring-boot-starter-web:2.3.1.RELEASE(*)
하위(내부)에 보면 tomcat과 관련된 라이브러리가 있다.
예전에는 톰캣과 같은 was를 설치하고, 자바소스를 실행시키는 방식으로 어플리케이션을 동작시켰었다.
지금은 라이브러리에 spring-boot-starter-tomcat처럼 내장되어있기 때문에 Spring Boot의 main메서드만 실행시켜도 웹서버가 동작해서 어플리케이션을 실행시킬 수 있다. 즉, 라이브러리를 import해서 사용한다는 의미이다!
spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
org.springframework,boot:spring-boot-starter-web:2.3.1.RELEASE(*) 내부에 보면 spring-boot-start-logging이라는 라이브러리가 있다.
또, 이 내부에는 org.slf4j:jul-to-slf4j:1.7.30이라는 라이브러리와 ch.gos.logback:logback-classic:1.2.3이라는 라이브러리가 있다.
logging하는 라이브러리로는 이 두가지 조합을 많이 사용하고 있다.
실무에서 개발할 때 로그남기는 것은 system.out.println보다는 이 로그 라이브러리를 활용하여 남기는 것이 중요하다.
그 이유는 심각한 에러를 모아서 본다던가, 로그의 종류별로 관리를 할 수 있기 때문이다.
spring 테스트로는 junit을 사용한다.
오랫동안 4버전이었는데, 최근 5버전으로 업데이트 되었다.
이 내부에는 mockito, assertj라는 라이브러리들이 있는데 junit테스트를 할 때 도와주는 역할이다.
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
위의 라이브러리들은 주요 쓰여지는 라이브러리이고, Spring Boot 입문을 하면서 어떻게 구성되어있는지 하나씩 알아보기 좋은 키워드들이다. 사용하면서 자세히 찾아보고 기록해봐야 겠다!
'Spring > Spring Boot 기초' 카테고리의 다른 글
Spring Boot - 웹개발 기초 - ② MVC란? (0) | 2022.11.09 |
---|---|
Spring Boot - 웹개발 기초 - ① 정적컨텐츠 (0) | 2022.06.27 |
Spring Boot - thymeleaf ( 템플릿 엔진 ) (0) | 2022.06.25 |
Spring Boot - Welcome Page 만들기 (0) | 2022.06.25 |
Spring Boot - Import projects (0) | 2022.06.25 |