1. 스타터(starter)란?
- 여러 관련 라이브러리를 묶어서 패키지로 제공
- starter만 pom.xml에 추가하면, 관련 라이브러리가 자동으로 추가된다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
예를 들어 pom.xml파일에 이를 추가하고 reload project를 하면 관련 라이브러리가 자동 추가된다.

2. pom.xml이란?
- Maven 기반 프로젝트의 설정 파일
- 프로젝트 기본 설정 정보, 의존 라이브러리, 설정 상속 정보를 지정
<parent> 태그가 상속 정보를 지정하는 것. pom 파일의 부모 pom파일을 지정함.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>는 기본 설정 정보를 key , value형태로 저장하는 것이다.
<properties>
<java.version>1.8</java.version>
<org.springframework-version>5.0.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
</properties>
java.version이 key, 1.8이 value가 된다.
이렇게 쭉 설정해놓으면 다른 곳에서 아래와 같이 쓸 수 있다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
${key}를 쓰면 나중에 value로 대체가 된다. -> 5.0.2.RELEASE로 바뀐다!
이걸 이렇게 안쓰고 직접 값을 쓰면, 나중에 버전을 바꿀 때 해당 값들을 바꿔줘야 하는 번거로움이 있는데
<properties>를 이용해서 key, value를 정해놓고 그 값들을 사용하게 하면 <properties>에 있는 것만 바꾸면 되니
pom파일을 관리하는 것이 훨씬 쉬워지게 되는 것이다.
3. pom파일의 상속
- <parent>로 pom.xml파일 간의 상속이 가능하며, 자손에서 덮어쓰기 가능 -> 자바의 오버라이딩처럼!
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.13</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
spring-boot-dependencies-2.7.9.pom <- spring-boot-starter-parent-2.7.9.pom <- pom.xml
4. 자동 의존성 변경하기 - 덮어쓰기와 제외하기
- starter에 포함된 특정 라이브러리를 제외하는 것이 가능
- 특정 라이브러리의 버전을 변경하는 것도 가능
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupid>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
빼고 싶은 라이브러리를 이런식으로 정해줄 수 있다.
<dependency>
<groupid>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.14.2</version>
</dependency>
버전을 바꿔주는 것도 가능한데, 이렇게 버전을 직접 적어주면 된다.
'SpringBoot' 카테고리의 다른 글
| ch3 08. @Import와 @Conditional (0) | 2023.07.31 |
|---|---|
| ch3 07. 의존성 관리와 설정의 자동화(2) (0) | 2023.07.31 |
| ch3 05. Spring 애너테이션 (0) | 2023.07.30 |
| ch3 04. Bean과 ApplicationContext (0) | 2023.07.30 |
| ch3 03. Spring DI의 원리(2) (0) | 2023.07.29 |