본문 바로가기

SpringBoot

ch3 06. 의존성 관리와 설정의 자동화(1)

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