본문 바로가기
Study Progamming/Spring

[ 스프링 부트 코딩 공작소 ] 스프링 부트의 핵심 살펴보기 - 스타터 의존성

by ${코딩몬} 2018. 1. 11.


종류 : 대학교 소장 도서
제목 : 스프링 부트 코딩 공작소
저자 : 크레이 월즈
옯김 : 황인서
소개 : 2017/12/29 - [Study Progamming/Spring] - [ 스프링 부트 코딩 공작소 ] 정리를 시작하며

단지 공부의 목적으로 해당 도서 및 자료를 정리해둔 것입니다.



- 1장 스프링 시작하기 -

스프링 부트의 핵심 살펴보기



스타터 의존성

  • 프로젝터의 빌드에 의존성[각주:1]을 추가하기가 쉽지 않다.
    • 어떤 라이브러리가 필요한가?
    • 라이브러리 그룹과 아티팩트[각주:2]는 무엇인가?
    • 어떤 버전이 필요한가?
    • 이 버전은 프로젝트에 있는 다른 의존 라이브러리와 잘 작동할까?

 

  • 스프링 부트는 스타터 의존성 수단으로 프로젝트 의존성을 쉽게 관리한다.
  • 실제로 스타터 의존성은 몇가지 기능 정의 의존성에 따라 전이적 의존성(Transitive Dependency)[각주:3] 해결 방법을 이용하여 공통으로 사용하는 라이브러리들을 모으는 조금은 특별한 메이븐[각주:4](또는 그레이들[각주:5]) 의존성일 뿐이다.

 

  • 예를 들어 JSON[각주:6] 형식의 리소스를 다루는 REST API[각주:7]스프링 MVC[각주:8]로 만든다고 가정하자.
  • 추가로 JSR-303[각주:9] 명세에 따라 선언적 유효성 검사[각주:10]를 적용하고 내장 톰캣 서버[각주:11]로 애플리케이션을 구동하려 한다.
  • 이렇게 하려면 메이븐이나 그레이들 빌드에 최소한 의존성을 여덟 개는 추가 해야한다.
    • org.springframework:spring-core
    • org.springframework:spring-web
    • org.springframework:spring-webmvc
    • com.fasterxml.jackson.core:jackson-databind
    • org.hibernate:hibernate-validator
    • org.apache.tomcat.embed:tomcat-embed-core
    • org.apache.tomcat.embed:tomcat-embed-el
    • org.apache.tomcat.embed:tomcat-embed-logging-juli

 

  • 반면에 스프링 부트의 스타터 의존성을 사용하면 스프링 부트 '웹(web)' 스타터(org.springframework.boot:spring-boot-starter-web)를 빌드 의존성으로 간단히 추가할 수 있다.
  • 웹 스타터 의존성 하나만 추가하면 다른 의존성을 전이적으로 모두 끌어오므로 의존성 전체를 일일이 추가할 필요가 없다.

 

  • 하지만 스타터 의존성은 단순히 빌드 의존성 개수를 줄이는 것보다 더 정교한 일을 한다.
  • 빌드에 웹 스타터를 추가하는 것이 애플리케이션에 필요한 기능 유형을 지정하는 작업이라는 점에 주목하자.
    • 웹 애플리케이션을 개발하려고 웹 스타터를 추가했다. 
    • 마찬가지로 JPA 영속성을 사용하려면 'jpa' 스타터를 추가한다.
    • 애플리케이션 보안이 필요하면 'security' 스타터를 추가하면 된다.
  • 즉, 특정 기능을 지원하려면 어떤 라이브러리를 사용해야 하는지 더는 생각할 필요가 없다.
  • 그저 해당 기능에 적절한 스타터 의존성을 찾아서 요청하면 된다.

 

  • 스프링 부트의 스타터 의존성을 사용하면 필요한 라이브러리 버전을 고민할 필요가 없다.
  • 스타터가 끌어오는 라이브러리 버전은 이미 테스트를 거쳐 라이브러리 간에 호환성 문제가 없다고 확인을 했기 때문이다.



  1. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Dependency Injection

  2.  
  3. 2018/01/05 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Maven

  4.  
  5.  
  6. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework

  7.  
  8.  


  1. 의존성 주입 : Dependency Injection, DI, 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다. [본문으로]
  2. 아티팩트 : [본문으로]
  3. 전이적 의존성 : [본문으로]
  4. 아파치 메이븐 : Apache Maven, 자바용 프로젝트 관리 도구이다. 아파치 앤트(Apache Ant)의 대안으로 만들어졌다. 아파치 라이선스로 배포되는 오픈 소스 소프트웨어이다. [본문으로]
  5. 그레이들 : [본문으로]
  6. JSON : [본문으로]
  7. REST API : [본문으로]
  8. 스프링 MVC : Spring MVC, 스프링 웹 프로그램밍 개발 시 거의 표준적인 방식인 모델-뷰-컨트롤러(MVC) 패턴 [본문으로]
  9. JSR-303 : [본문으로]
  10. 선언적 유효성 검사 : [본문으로]
  11. 톰캣 서버 : [본문으로]