스프링 | 스프링 부트

스프링 부트 - (Gradle)라이브러리와 의존성

Adose 2024. 8. 2. 16:04

Gralde의존 관계(의존성)를 관리해준다. 

예를들어 Spring-Web 라이브러리를 가지고 오면, 그와 관련된 톰캣, 웹 등을 가지고 온다. 

 

그렇다면 의존관계란 무엇일까? 

의존 관계 

특정 기능이나 서비스가 다른 기능이나 서비스를 필요로 할 때 발생하는 관계를 의미

연관을 유지하는 관계

사물의 변화가 다른 사물에도 영향을 미친다. 

 

 

라이브러리

 

  • 스프링 부트 라이브러리
    • spring-boot-starter-web
    • spring-boot-starter-tomcat: 톰캣 (웹서버)
    • spring-webmvc: 스프링 웹 MVC
    • spring-boot-starter(공통)
    • spring-boot spring-core

  • 테스트 라이브러리 
    • spring-boot-starter-test
    • junit: 테스트 기반 프레임워크
    • mockito : 실제 객체를 다양한 조건으로 인해 제대로 구현하기 어려울 경우 가짜 객체(=목 객체)를 만들어 사용
    • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
    • spring-test: 스프링 통합 테스트 지원

라이브러리와 의존성의 차이 
의존성은 프로젝트가 빌드되고 실행되기 위해 필요로 하는 외부 라이브러리나 모듈을 의미
라이브러리는 특정 기능을 제공하는 코드 집합이며, class, function의 모음으로 구성  
-> Gradle의존성을 관리해주는 도구라고 생각  
  • 인텔리제이에서는 아래와 같이 의존성을 확인할 수 있다.

 

 

¿ 찾아보면서 dependency configuration에 대해서 궁금해졌다. 

 

dependency configuration : gradle 기반의 프로젝트에서 선언된 모든 의존성들은 다양한 범위(Scope)를 지정하여 특정 상황에서만 사용되도록 설정할 수 있다. 이러한 scope를 configuration(환경 설정)를 통해 명시한다. 

testRuntimeOnly

 

 

위에서 말한 특정한 scope가 -> implementation, testImplementation 등을 말한다.   

implementation 컴파일 및 런타임 (프로젝트의 기본 의존성을 선언할 때 사용)
testCompileOnly 테스트 컴파일 시 포함, 런타임 시에는 포함 X
testRuntimeOnly 테스트 런타임 시 포함, 컴파일 시에는 포함 X
testImplementation 테스트 컴파일 및 런타임 시 모두 포함