View

spring 1.4.3 기준 작성 문서


spring boot 개요

spring boot는 spring framework를 기반으로 기존에 개발자가 직접 해야했 복잡한 설정들을 자동화, 간편화시킬 목적으로 만들어졌다.


spring boot의 결과물은 기본적으로 embedded tomcat이 포함되어 잇는 jar 형태로 배포되는데 java -jar 명령어로 간단하게 별도의 tomcat 설치와 설정 없이 실행 시킬 수 있다. 물론 설정 변경을 통하여 기존의 traditional war deployments 형태로도 배포가 가능하다.(spring scripts라는 CLI 도구도 제공하는데 사용해보진 않았음)


공식 문서에서 spring boot의 goal을 다음과 같이 소개한다


  • 훨씬더 빠르고 광범위(?)하게 접근가능한 spring development experience
  • Be opinionated out of the box, but get out of the way quickly as requirements start to diverge from the defaults.
  • 대규모 프로젝트를 위한 common non-functional features를 제공(embedded server, security, metrics, health check, externalized configuration)
  • no requirement fucking xml configuration

spring boot 1.4.3 기준 Java7+ 과 spring framework 4.3.5.RELEASE +, maven 3.2+, gradle 1.12 or 2.x  그 상위를 필요로한다. 


servlet 3.0+ 을 지원하는 컨테이너(tomcat 7+, jetty 8+)에도 배포가 가능하다.


spring boot with maven

spring boot의 디펜던시들은 기본적으로 org.springframework.boot 라는 groupId를 사용하고 있다. STS에서 spring boot project를 생성할 때 일반적으로 spring-boot-starter-parent 프로젝트를 상속받게 되어있다. spring boot는 다양한 종류의 starter를 제공하는데 여기서 상속받는 parent는 useful Maven defaults를 제공하는 special starter이며 dependency-management를 제공해서 기존 뼈대인 spring boot와 기타 다른 starter간에 버전으로 인한 충돌이 발생하지 않도록 관리해준다. (그래서 다른 starter 디펜던시에서 version태그를 생략할 수 있음)


spring-boot-starter-parent가 제공하는 기능 및 특징

  • 기본적으로 Java 1.8을 사용
  • UTF-8 source encoding
  • spring-boot-dependencies POM에서 상속받은 공통 종속성에 대한 <version> 태그를 생략할 수 있는 Dependency Managements 섹션
    • spring boot에서 공통적으로 관리하는 항목에 대해서 최적의 버전에 대한 관리를 상속받아서 알아서 해준다는 의미
  •  resource filtering
  • plugin configuration(exec plugin, surefire, Git commit ID, shade)
  • 특정 프로파일  resource filtering(application.properties, application.yml, application-foo.properties, application-foo.yml)

On the last point: since the default config files accept Spring style placeholders (${…​}) the Maven filtering is changed to use @..@ placeholders (you can override that with a Maven property resource.delimiter).

starter란?

starter은 application에서 편리하게 사용할 수 있도록 제공하는 dependency descriptor이다. 공식적으로 제공하는 starter의 경우 spring-boot-starter-*의 이름 형태로 제공하고 있따.

Share Link
reply