728x90

의존성 관리

pom.xml을 보면 parent 부분이 있다. 

그 안에 spring-boot-starter-parent라는 부분이 있는데 여기서 dependency에 들어오는 외부 라이브러리의 버전과 의존성을 관리하게 된다.

정확히는 spring-boot-dependency 라는 pom 파일에서 org.springframework.boot의 각 버전에 맞는 dependency의 각 version이 정의돼있다. 

따라서 우리는 parent의 버젼만 제대로 명시해주면 다른 dependency의 버젼은 스프링 부트가 적절하게 설정해주는 것이다.

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

 

이제 dependency 부분을 보자.

spring boot의 초기 설정에서 거의 필수적으로 포함하는 라이브러리인 spring-boot-starter-web이다.

version을 명시하지 않았지만 parent의 버젼에 맞도록 알아서 라이브러리들을 추가해준다.

이 라이브러리만 추가해줘도 수 많은 외부 라이브러리들이 버젼도 호환이 되도록 추가가 되니, 스프링 부트의 아주 편리한 기능이라고 할 수 있다.

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

 

내장 웹 서버

스프링 부트 자체는 서버가 아니다. 그러나 내장된 서버를 사용할 순 있다.

기본으로 설정된 내장 서버는 tomcat이다. 원한다면 jetty, undertow 등 다른 서버도 사용 가능하다.

그러나 자동 설정 안에 톰캣과 관련된 기본 웹 설정이 되어있으므로 기본 내장 웹 서버를 사용해도 충분하다.

 

독립적으로 실행 가능한 JAR

스프링 부트는 프로젝트를 하나의 .jar 파일로 묶어서, 이 파일을 실행하면 프로젝트를 구동할 수 있도록 한다.

 

pom.xml을 보면 아래와 같은 코드가 있다. 

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

이 spring-boot-maven-plugin이 스프링 부트 자체 메이븐 플러그인인데, 이 플러그인을 통해 mvn pacakge를 실행해 프로젝트를 하나의 .jar 파일로 패키징할 수 있다. 

이 파일을 실행하면 intellij를 통해 프로젝트를 실행한 것과 똑같이 서버를 구동할 수 있다. 

이 jar 파일 내에 프로젝트의 모든 파일과 코드, 심지어 외부 라이브러리까지 포함이 되어있으므로 실행이 가능한 것이다. 

스프링 부트의 목적 중 하나인 독립적으로 실행이 가능해야 한다는 목적과도 부합하는 기능이라고 할 수 있다.

 

728x90

+ Recent posts