반응형
스프링 부트 어플리케이션을 시작하는 과정에 대해서 알아보자.
- 주요 과정은 아래와 같음.
- 하나, pom.xml 파일에 spring-boot-starter-parent를 설정함. (1/4)
- 둘, 필요한 starter project 로 pom.xml 파일을 구성함. (2/4)
- 셋, 어플리케이션을 실행하기위해, spring-boot-maven-plugin을 설정함. (3/4)
- 넷, 스프링 부트 실행 클래스를 만듬. (4/4)
그럼, spring-boot-starter-parent 구성에 대해서 알아보자
- 우선, 아래 예시, pom.xml 을 유심히 보자
잠깐! 여기서 의문 한가지 ? ^^;
- 위에서 가장 먼저 눈에 들어오는 spring-boot-starter-parent 가 필요한 이유가 있을텐데 왜 필요할까?
- 정답) spring-boot-starter-parent는 아래 내용을 포함한다.
- 사용할 JAVA 기본버전
- 스프링 부트가 사용하는 의존성의 기본버전 및 메이븐 플러그인의 기본 설정을 포함함.
- 다시말하면, spring-boot-starter-parent 의존성은 스프링부트 기반 어플리케이션에 대한 의존성 및 플러그인 관리를 제공하는 부모 POM이다.
- 정답) spring-boot-starter-parent는 아래 내용을 포함한다.
그럼, spring-boot-starter-parent 에 대해서 좀 더 상세하게 알아보자.
- 해당 spring-boot-starter-parent을 알기위해서 내부 코드를 확인해보자.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${revision}</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
<artifactId>spring-boot-starter-parent</artifactId>
<packaging>pom</packaging>
<name>Spring Boot Starter Parent</name>
<description>Parent pom providing dependency and plugin management for applications
built with Maven</description>
<properties>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
...
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/application*.yml</include>
<include>**/application*.yaml</include>
<include>**/application*.properties</include>
</includes>
</resource>
</project>
설명
- 출처 URL : https://howtodoinjava.com/spring-boot2/spring-boot-starter-parent-dependency/
- 위 소스의 아홉번째 라인을 보시면,
- spring-boot-starter-parent 종속성은 spring-boot-dependencies로부터 상속됨을 확인할 수 있음.
- 참고로 spring-boot-dependencies는 스프링 부트가 사용하는 모든 의존성에 대한 기본 의존성 관리를 제공함.
- spring-boot-starter-parent 종속성은 spring-boot-dependencies로부터 상속됨을 확인할 수 있음.
- 그리고, 다음코드는 spring-boot-dependencies에 구성된 다양한 버전의 다양한 종속성을 보여주고 있음
- 위 소스의 아홉번째 라인을 보시면,
- 그럼, 기본 종속성 버전을 오버라이드(override) 하는 방법은?
- 스프링 부트에는 대부분의 종속성에 사용할 기본 버전이 존재함.
- 그리고, 기본버전을 오버라이드 하는 방법은 아래와 같음.
- 프로젝트의 pom.xml 파일의 "properties" 태그(tag)를 통해서 프로젝트에서 필요하거나 or 내가 선택할 버전으로 오버라이드 할 수 있음.
- 예를 들면 아래와 같음
- 만약 아래와 같이 스프링 부트에서 디폴트 버전으로 google GSON library의 2.8.2 버전을 사용한다면 ?
- 그런데, 만일 나는 디폴트 버전이 아니라, google GSON library의 2.7 버전을 사용하고 싶다면, properties 태그를 통해서 아래와 같이 오버라이드 하면 됨.
- 만약 아래와 같이 스프링 부트에서 디폴트 버전으로 google GSON library의 2.8.2 버전을 사용한다면 ?
- 그리고, 여러버전의 프레임워크 간 호환성 문제 발생에 대해서 개발자는 어떻게 해야 할까?
- 보통 스프링의 특정 버전과 호환되는 최신 스프링 세션 버전을 찾으려면, 문서를 찾아서 읽는 것이 해결책이다.
- but, 스프링 부트를 사용하면, spring-boot-starter-parent로 쉽게 만들 수 있음.
- 즉, 새로운 스프링 버전으로 업그레이드하고 싶으면, 스프링 버전에 대한 spring-boot-starter-parent 의존성을 찾아야함.
- 그리고, spring-boot-stater-parent 의 해당 특정 버전을 사용하기 위해 어플리케이션을 업그레이드 하면, 다른 모든 의존성이 새 스프링 버전과 호환되는 버전으로 업그레이드 됨.
- 결론적으로, 개발자가 처리해야 하는 문제가 하나 더 없어지는 것. 참 소소한 행복이고, 감사하다. ^^;
결론
- 스프링 부트 어플리케이션을 시작하는 과정은 아래와 같음.
- 하나, pom.xml 파일에 spring-boot-starter-parent를 설정함. (1/4)
- 둘, 필요한 starter project 로 pom.xml 파일을 구성함. (2/4)
- 셋, 어플리케이션을 실행하기위해, spring-boot-maven-plugin을 설정함. (3/4)
- 넷, 스프링 부트 실행 클래스를 만듬. (4/4)
- spring-boot-starter-parent 의존성은 스프링부트 기반 어플리케이션에 대한 의존성 및 플러그인 관리를 제공하는 부모 POM이고, 아래 내용을 포함한다.
- 사용할 JAVA 기본버전
- 스프링 부트가 사용하는 의존성의 기본버전 및 메이븐 플러그인의 기본 설정을 포함함.
- 오늘도 spring-boot-starter-parent 에 대한 지식 마술(?) 한가지 획득완료! 감사합니다. ^^
- 오늘의 명언 한마디
- 이상하게도 우리 뇌는 무언가를 하면 안 된다고 자꾸 생각할수록, 그 일에 더 집착하고 더 큰 흥미를 느낀다.
- 그리고, 이런 감정은 우리 마음에 격렬하게 스며든다.
- 따라서 어느 순간 고삐가 느슨해지면, 지금까지 부정적으로 집착하고 있던 먹는 것에 대한 폭발적인 충동을 억누르기 힘들어진다.
- 결국 부정적인 자극을 추구하는 뇌는 하면 안 된다고 생각할수록 더 하게끔 만드는 것이다.
- 코이케류노스케지음, "생각 버리기 연습" 중에서.
- 오늘의 영어 한마디
- I am happy to meet you.
- 나는 기뻐요 / 만나서 / 당신을
- 해설
- "happy" 는 기쁨, 행복을 나타냄
- "to meet you" 는 당신을 만나서라는 뜻
- I am happy to meet you.
- 오늘의 민법 한마디(for real estate)
- 제1편 총칙 / 제5장 법률행위 / 제3절 대리
- 제132조(추인, 거절의 상대방)
- 추인 또는 거절의 의사표시는 상대방에 대하여 하지 아니하면 그 상대방에 대항하지 못한다.
- 그러나 상대방이 그 사실을 안 때에는 그러하지 아니하다.
- 제132조(추인, 거절의 상대방)
- 제1편 총칙 / 제5장 법률행위 / 제3절 대리
- 나의 목표 및 다짐을 항상 내곁에 두기.(계속 37)
- 목표
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 목표를 이루기 위한 실천방안
- 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
- 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
- "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
- 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
- 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
- 목표
300x250
'좋아하는 것_매직IT > 1.spring' 카테고리의 다른 글
23.Spring, Spring Boot App 시작하기 (pom.xml 파일에 spring-boot-maven-plugin 구성, 3/4) (0) | 2021.02.06 |
---|---|
22.Spring, Spring Boot App 시작하기 (필요한 starter project 로 pom.xml 파일을 구성, 2/4) (0) | 2021.02.06 |
20.Spring, 스프링 부트(Spring Boot)에 대해서 알아보자. (0) | 2021.01.27 |
19.Spring, 12팩터앱(The Twelve-Factor App)에 대해서 알아보자. (0) | 2021.01.27 |
18.Spring, 스프링 데이터 JPA(Java Persistence API)에 대해서 알아 볼께요. (0) | 2021.01.15 |