프레임워크(Framework)/Spring

[Spring] 2. 스프링 Gradle 프로젝트의 라이브러리 살펴보기 with IntelliJ IDEA

잇트루 2022. 7. 18. 22:57
반응형

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술'내용을 바탕으로 공부하여 정리한 것임을 알려드립니다.

 

Gradle 프로젝트를 생성하면 build.gradle 파일에서 전반적인 프로젝트 정보를 확인할 수 있다.

build.gradle

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'hello-spring'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

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'
}

tasks.named('test') {
	useJUnitPlatform()
}

build.gralde에는 라이브러리에 관한 정보도 포함되어 있으며, dependencies { } 안에 test 라이브러리와 함께 생성할 때 추가한 thymeleaf(View 템플릿 엔진) 라이브러리와 Spring Web 라이브러리가 추가되어 있다.

 

라이브러리의 자세한 내용을 확인하려면 프로젝트의 External Libraies를 확인하면 알 수 있다.

목록을 확인하면 정말 수많은 라이브러리를 끌어다가 사용하고 있음을 알고 있다. 이는 Gradle이나 Maven과 같은 프로젝트들은 의존관계를 관리해주기 때문이다.

예를 들어 Spring Web을 추가하여 프로젝트를 생성하였다면, Spring Web 라이브러리를 사용하기 위해서 필요한 의존 관계의 라이브러리들을 자동으로 다운로드하여 사용하게 되는 것이다. (tomecat, WebMVC ... 등)

 

라이브러리 간의 의존관계 확인하기 위해서는 우측 Gradle을 클릭하면 Dependecies에서 확인할 수 있다. (만약 없다면 좌측 하단의 네모 아이콘을 클릭하면 생길 것이다.)

Dependencies 내부에는 테스트 라이브러리를 포함하여 compileClasspath, runtimeClasspath 등이 있다.

compileClasspath는 컴파일에 사용되는 라이브러리며, runtimeClasspath에는 런타임 시 사용되는 라이브러리다. 오직 컴파일에만 사용되는 라이브러리도 존재하고, 런타임 시에만 사용되는 라이브러리도 있으며, 컴파일과 런타임 시 모두 사용하는 라이브러리도 존재한다.

 

compileClasspath에서 Spring Web의 의존관계 라이브러리를 살펴보면 수많은 라이브러리와 의존관계가 형성되어 있는 것을 알 수 있다. 라이브러리 뒤의 (*) 표시는 다른 라이브러리(Spring Boot, Thymeleaf 등)에 중복으로 나타난 것들을 표시한 것이다.

 

Spring Web과 Thymeleaf를 추가할 경우 관련된 스프링 부트 라이브러리와 테스트 라이브러리를 다운로드하여 사용한다.

 

스프링 부트 라이브러리

spring-boot-starter-web

- spring-boot-starter-tomcat: 웹서버 톰캣

- spring-webmvc: 스프링 웹 MVC

 

spring-boot-starter-thymeleaf: 뷰 템플릿 엔진

 

spring-boot-starter: 프로젝트 생성 시 추가되는 공통 라이브러리 - Spring Boot + Spring Core + Logging

- spring-boot

- spring-core

- spring-boot-starter-logging

-- logback, slf4j

 

테스트 라이브러리

spring-boot-starter-test

- jUnit: 테스트 프레임워크

- mockit: 목 라이브러리

- assertj: 테스트 코드를 좀 더 편하게 작성하도록 도와주는 라이브러리

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

 

요즘 웹 어플리케이션을 개발하기 위해서는 사용되는 라이브러리만 수십 가지는 기본적으로 사용된다고 한다. 이는 라이브러리 용량에만 수십 메가바이트 정도라고...

 

요약

Gradle 프로젝트의 라이브러리는 의존관계가 있는 라이브러리를 함께 다운로드한다. 프로젝트를 생성할 때 추가한 라이브러리를 Spring Web이라 가정하면,  Spring Web에서 필요로 하는 라이브러리를 자동으로 끌어다가 사용하는 것

 

 

반응형