[Spring Boot] 의존성 관리

off_sujin·2021년 9월 10일
0

이 글은 inflearn에서 백기선님의 [스프링부트 개념과 활용]을 듣고, 공부하며 정리한 글입니다.


pom.xml에 아래의 코드를 넣어주면 다양한 의존성들이 자동으로 추가되며, 이것이 관리해주는 의존성에 대하여 버전을 명시하지 않아도 된다.

pom.xml

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
</parent>

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
</dependencies>

이게 어떻게 되는걸까??

spring-boot-starter-parent

spring-boot-starter-parent.pom

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.5.2</version>
</parent>

spring-boot-starter-parent.pom을 살펴보면 spring-boot-dependencies라는 parent가 있다.

spring-boot-dependencies.pom

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>2.0.3.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-test</artifactId>
                <version>2.0.3.RELEASE</version>
            </dependency>
            ...
        <dependencies>
<dependencyManagement>
            

또 다시 spring-boot-dependencies.pom에 들어가보면 dependencyManagement라는 어노테이션 아래에 스프링부트, 스프링부트 테스트 등의 버전들이 적혀있다.

따라서 spring-boot-starter-parent의 버전만 명시해주면, pom 파일이 지원하는 의존성들의 버전을 명시해주지 않아도 이미 선언된 버전을 가져오는 것이다.

spring-boot-starter-*

Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of dependency descriptors.
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters

이처럼 starter를 사용하면 만들고자하는 프로젝트에 맞는 의존성들을 자동으로 추가해준다.
예를 들어 스프링과 JPA를 이용하여 데이터베이스에 접근하고 싶다면 spring-boot-starter-data-jpa를 dependency에 추가하면 된다.

처음 보여준 코드에서처럼 dependency에 spring-boot-starter-web를 추가했더니 다음과 같이 웹 애플리케이션을 만드는 데에 필요한 의존성들이 자동으로 추가된 것을 볼 수 있다.

  • 위의 경우에는 spring-boot-starter-parent에서 버전을 관리해주기 때문에 dependency에 추가할 때 직접 버전을 명시할 필요가 없다.

  • 하지만 spring-boot-dependencies.pom에서 지원하지 않는 외부 라이브러리는 버전을 명시해야한다.

  • 이미 스프링부트가 버전을 관리해주는 의존성의 버전을 변경하고 싶다면 spring-boot-dependencies.pom에 있는 dependencyManagement에서 해당 의존성을 복사한 후에 변경하고자하는 버전으로 바꿔주면 해당 버전으로 오버라이딩된다.

profile
학습 중..

0개의 댓글