6.스프링부트 starter parent 컴포넌트
다음과 같이 Maven 기반으로 생성된 스프링 부트 애플리케이션이 있다고 가정할 때,
일반적으로 스프링 부트 기반 애플리케이션에서 <parent>...</parent> 엘리먼트는
spring-boot-starter-parent 컴포넌트를 설정하기 위한 옵션으로 동작함
pom.xml
<project ...>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>1. Spring-boot-starter-parent
1-1. <parent>...</parent>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.6</version>
<relativePath/>
<!-- lookup parent from repository, Maven 저장소에서 parent를 가져오는 옵션 -->
</parent><parent></parent>는 이 프로젝트가 스프링 부트 프로젝트의 하위 프로젝트임을 명시하기 위해 spring-boot-starter-parent를 지정하는 코드라고 볼 수 있음
이렇게 지정함으로서 웹 애플리케이션 개발에 필요한 플러그인 및 의존 관계 관리를 스프링 부트에게 위임할 수 있음
gradle에서는 아래와 같은 설정이 이에 해당한다고 볼 수 있음
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.6'
id 'io.spring.dependency-management' version '1.1.4'
}1-2. spring-boot-starter-parent
spring-boot-starter-parent는 모든 스프링 부트 스타터 의존 관계를 구성하는 부분에 있어서 부모 역할을 수행하는 스타터로, spring-boot-starter-parent를 명시하면, 해당 프로젝트가 spring-boot-starter-parent의 하위 프로젝트로서 몇 가지 부분을 확장한다는 것을 의미함
이러한 spring-boot-starter-parent 모듈은 기본적인 자바 버전을 지정하고, 해당 프로젝트에서 사용하는 몇 가지 기본 설정 옵션을 제공함
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.6</version>
<relativePath/>
</parent>→ 스프링 부트의 기본적인 버전을 2.7.6버전이라고 명시
아래와 같이 개별적인 의존성들은 별도의 버전이 명시되어 있지 않지만, <parent> </parent> 내부에 명시된 2.7.6 버전을 기반으로 각각의 버전들이 자동으로 구성됨
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>Last updated on