스프링부트 환경설정 - Pom.xml

younk·2023년 7월 8일
0

스프링부트

목록 보기
2/10

스프링부트 starter

스프링은 라이브러리간의 의존성 관리와 버전충돌을 방지하기 위해 spring-boot-starter와 spring-boot-starter-parent를 제공한다.
위 두가지는 스프링부트를 사용하면서 자주 사용하게 되는 라이브러리간의 의존성, 버전 조합을 각각 테스트하여 공개되었다. 자주 사용되는 라이브러리를 통합하여 설정할 수 있게 해준다.

<dependencies>
    ...(생략)

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

예를들어, 기존에 aspectJ를 이용한 AOP를 이용하고 싶으면 org.springframework:spring-aop 의존성과 org.aspectj:aspectjweaver 의존성을 추가해서 사용했었지만
스프링부트에서는 spring-boot-starter-aop 의존성만 추가하면 aspectJ를 사용하기 위한 모든 의존성 조합이 추가된다. 이렇게 되면 개발자가 관리해야할 의존성이 줄어들어 보다 효율적으로 일을 할 수 있다.

  • parent
    프로젝트 제작시 다양한 라이브러리들을 사용하게 되면, 라이브러리 버전간의 충돌이 발생할 수 있다.
    스프링부트의 starter가 의존성 조합을 제공해준다면, starter-parent는 해당 의존성 조합간의 충돌 문제가 없는 검증된 조합을 제공한다.

parent를 사용하지 않고, 의존성 관리를 하기위한 방법으로는 dependencyManagement를 사용할 수 있다. 이 태그 아래에 직접 dependency를 직접 추가할 수 있다.
이렇게되면 parent에 설정된 인코딩 정보나 자바정보, 플러그인설정 등도 함께 설정해주어야한다.

  • 의존성 관리 응용
    dependency 설정을 할때, 스프링부트가 관리하는 dependency들은 버전을 명시하지 않아도 된다. starter의 관리를 따르기 때문에 그에 맞는 버전으로 설정되기 때문이다.
    하지만 스프링부트가 관리하지 않는 dependency들은 버전을 명시해주어야한다.
    혹은 스프링부트가 관리하는 dependency의 버전을 바꾸고 싶을때도 동일하게 오버라이딩하여 버전을 수정해주면된다.

0개의 댓글