2020. 5. 21. 15:44ㆍComputer Science/Backend
(Maven 기준)
파이썬에 pip이 있다면 자바 스프링에는 maven, gradle같은 빌드 툴이 있다. 스프링은 빌드 툴로 부터 어플리케이션에 필요한 라이브러리를 다운로드 받아 사용한다. 자바 라이브러리간의 관계를 의존성이라고 부르는 것 같다. 스프링의 의존성은 버전 영향을 많이 받는다.
스프링 부트 의존성(spring boot dependencies)은 org.springframework.boot라는 groupId를 사용한다. 전형적으로 메이븐 pom 파일이 spring-boot-starter-parent 프로젝트로부터 상속받고, 하나 혹은 두 개 이상의 Starters를 선언한다. 또한, 스프링 부트는 실행가능한 jar를 만들기 위해 선택적으로 Maven plugin을 제공한다.
개발 분야에 따라 필요한 라이브러리를 주입하기 때문에 자세한 건 생략하고, 뼈대가 되는 spring-boot-starter-parent와 spring-boot-starter 위주로 정리하겠다.
spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.12.RELEASE</version>
</parent>
pom.xml에 위 코드를 추가해주면 아래로 따라오는 spring boot 의존성들에 대해, 검증된 버전 조합을 제공한다. 보통 <dependencies> ... </dependencies>가 들어가기 전에 선언해준다. 이 의존성은 특별한 스타터로, 유용한 메이븐 디폴트를 제공한다. 이것은 또한 dependency-management 라는 것을 제공하는데, 이는 당신이 굳이 의존성의 버전태그를 하지 않아도 되게끔 해준다.
spring-boot-starter-?
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
...
</dependencies>
starter는 당신의 어플리케이션에 포함시킬 의존성 디스크립터들의 집합이라고 보면 된다. 위에서도 언급했지만 spring-boot-starter-parent를 설정해 두었다면 버전 태그는 필요 없다. 예를 들어, 스프링과 JPA를 활용해 데이터베이스에 접근하고 싶다면 spring-boot-starter-data-jpa를 추가하면 그만이다. starter가 없었다면 우리는 사용하고 싶은 라이브러리 외에 그 라이브러리와 연관 된 추가적인 라이브러리들을 조사하고 적절한 버전 조합으로 직접 구성했어야 할 것이다. 뿐만 아니라 중복되어 문제가 되는 의존성에 대해 exclusion 설정도 되어 있으니 사용하지 않을 이유가 없다.
starter에 대한 자세한 설명과 종류는 공식문서를 참고하면 된다.
Ref. https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-documentation
'Computer Science > Backend' 카테고리의 다른 글
[Kafka] 카프카 주요 개념 정리 (2) | 2020.05.30 |
---|---|
[Kafka] 카프카 실행, 토픽 생성, 메시지 테스트 (0) | 2020.05.24 |
Flume OG, NG, Property (0) | 2020.04.14 |
Elastic Search, Log Stash, Kibana (ELK Stack) 기초 (0) | 2020.04.05 |
Apache Flume 기본 개념 정리 (4) | 2020.04.04 |