의존성 관리
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 파일 내에 프로젝트의 모든 파일과 코드, 심지어 외부 라이브러리까지 포함이 되어있으므로 실행이 가능한 것이다.
스프링 부트의 목적 중 하나인 독립적으로 실행이 가능해야 한다는 목적과도 부합하는 기능이라고 할 수 있다.
'프로그래밍 > Spring Boot' 카테고리의 다른 글
[Spring Boot] 파비콘 & HATEOAS & CORS (0) | 2020.07.02 |
---|---|
[Spring Boot] 자동 설정 (@SpringBootApplication 어노테이션) (0) | 2020.06.29 |
[Spring Boot] 스프링 부트 소개 & 프로젝트 생성 & 구조 (0) | 2020.06.29 |