본문 바로가기
Web/Spring

[Gradle] 2. library & dependencies

by jungwon3004 2022. 2. 22.
728x90
반응형

Q. 궁금증

 

gradle에서 library를 어떻게 다운로드 받는지 저번 글에서 간단하게 알아봤다.

build.gradle 에 들어가면 

 

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

이런 코드가 있는데, 이 설정파일에서 어떤 것을 어디서 다운로드 받는지 설정해두었다.

처음 spring boot 로 프로젝트 생성할 때, dependencies 를 선택하면 자동으로 spring boot에서 build.gradle 파일에 이런 코드를 생성한다.

dependencies에 적힌 libraries를 repositories{ } 에서 받아온다.

지금 같은 경우는 mavenCentral( ) 이라는 곳에서 받는다고 적어둔 것이다.

 

하지만 여기서 궁금증이 생길 것이다.

 

분명 우리가 dependencies에서 받아오기로 한 library는 총 2개이다

하지만, 우리의 프로젝트에 있는 external libraries에는 수없이 많은 libraries가 있다.

우린 분명 2개 다운받으라고 했는데 왜 이렇게 많은 libraries가 다운받아진 것일까?

 

 

 

A. DI

intellij 기준으로 창의 맨 왼쪽 아래에 있는 네모 2개 겹친 아이콘을 누르자.

그러면 오른쪽 상단에 gradle이 생긴다. 

그걸 클릭하면

이렇게 gradle이 해당 hello-spring 프로젝트에서 어떤 것들을 했는지 보여준다.

여기 dependencies 를 보면 우리가 선택한 2개의 libraries가 있다.

그리고 그 library를 눌러보면

안에 이렇게 많은 libraries가 있다.

이건 안에 속했다는 개념이 아니라, DI 의존성이 주입된 것들을 같이 다운받아줬다는 개념이다.

즉, 우리가 선택한 spring web 과 thymeleaf 를 다운받아서 사용하기 위해서는 수없이 많은 의존성을 가지는 libraries같이 다운받아야 한다.

 

gradle에서는 그것들을 알아서 우리 대신 처리해준다.

그렇기에 우리가 편하게 코드를 짤 수 있는 것이다.

 

 

 

 

(+a) spring library 조금 더 살펴보기

한번 기본적인 libraries를 조금 더 살펴보자.

 

(1) spring-boot-starter-web

: 우리가 처음에 spring boot 에서 spring web 을 선택했던 그것이다.

이 library가 DI하고 있는 library 중 핵심은 2가지가 있다. (물론 많은 library가 DI되어 있지만)

spring-boot-starter-tomcat 

spring-webmvc

이렇게 2가지이다.

 

(2) spring-boot-starter-thymeleaf

: 타임리프 template engine 이다. view 단을 다루는 엔진이다

 

(3) spring-boot-starter (공통)

: spring boot + spring core + logging

구조는

=> spring-boot-starter

      => spring-boot

            => spring-core

      => spring-boot-starter-logging

            => logback , slf4j

요즘엔 거의 spring logging 에서 logback + slf4j 가 표준에 가깝게 많이 사용한다고 한다.

 

(4) spring-boot-starter-test (테스트용 라이브러리)

: junit (거의 표준으로 junit5를 사용함)

: spring-test (스프링 통합 테스트 지원)

728x90
반응형