스프링 부트가 등장하기 이전
。Spring Boot가 등장하기 이전에는Spring Project를 생성 시개발자가 수작업으로 다음설정들을 수행
▶Dependency 관리(pom.xml)
▶Web App' Configuration정의 (web.xml)
▶Spring Bean관리 (content.xml)
▶NFR구현을 위한 코드 작성 ( Non Functional Requirements )
。 상단의 많은 설정을 하고 나서야Production 환경에 적합한Application을 개발할 수 있었고,Application의빌드시에도외장 WAS,라이브러리등을 손수 추가설치하여배포
▶ 해당 과정을새 프로젝트마다 반복하는 어려움이 존재
。과거개발자가Spring을 통해 개발 시 직접서블릿을 구현하고 이를톰캣과 같은 외부웹서버에 배포해야 했지만 지금은Spring Boot를 통해Spring Web Starter를 포함하여jar 빌드시내장 톰캣을 제공하기 때문에 별도의 설정 없이JAR만 실행하여서버 구동이 가능
Spring Boot
。Spring Framework의 설정의 복잡함을 개선하고자개발을 수행 시 필요한설정을 간편하게 처리하는 별도의프레임워크
。Production ready , Build quickly
▶Application개발 시 필요한환경 설정을최소화하고개발자가Business logic에 집중하게 함으로써 생산성을 향상
。프로젝트를 자체적인WAS를 내장 및 독립적으로 실행 가능한Jar 파일로빌드하여도커를 통한이미지화가 간편
▶Starter를 포함 시빌드단계에서Starter가 의존하는라이브러리들을JAR에 포함
▶Spring Web Starter를 포함한Jar 파일을 실행 시 자동으로Spring Application은내장서버위에서 구동
。Spring Boot로spring-web starter를 추가하여Project생성 시 기본적으로내장서버상에서 실행가능한 완성된어플리케이션(Production)을 제공하며 해당어플리케이션을 기반으로비즈니스 로직을 추가
@SpringBootApplication:
。Spring Boot로 생성한Application의진입점 Class에 선언하는 Annotation
▶ 기존Spring에서는Application을 실행하기위해 수많은 설정을 했어야 했으나,Spring Boot에서는 해당어노테이션을 통해Application을빌드하여 간단한 실행이 가능.
。@SpringBootApplication안에@ComponentScan이 포함
▶@SpringBootApplication을 포함하는클래스 경로기준 하위패키지 범위내 모든Spring Bean이전역 Spring Context에 포함됨
기존
Spring의배포방식
。xml에Spring Bean설정 및WAS를 따로 설치하여Spring을tomcat위에서 구동하도록 설정해야 했음
1.Java설치
2.외장 WAS설치
( ex :Tomcat,WebSphere,WebLogic)
3.WAR파일 배포
▶배포까지의 설정이개발자가 수작업으로 작업 및 복잡하므로Spring Boot의 Embedded Server를 활용
Spring Boot를 활용한배포방식
。Spring Boot에서Spring Boot Starter를 추가 시Starter가 의존하는라이브러리들을JAR에 포함하여빌드
。프로젝트에Spring Web Starter를 포함하여빌드시Tomcat과 같은WAS가 이미Spring Web의JAR 파일내에 내장
▶WAR방식과 다르게서버를 따로 설치하지 않아도Java만 설치하면JAR파일을 실행하여Spring을내장서버상에서구동이 가능
JAR(.jar: Java ARchive) :
。여러 개의Java Class 파일,메타 데이터,Resource 파일등을 하나의파일로패키징한Archive 파일
。필요한 기본적인dependency들을 전부 구성하여 추후이미지 빌드시에도 매우 용이
Spring Boot에서 제공하는 기능
。Application을Production ready,Build quickly하기 위한 다음 기능을 제공한다
Build Quickly: 빠른 개발 시 유용한 기능
Spring Initializerspring.io
。Spring Boot project를 쉽게 생성.
▶프로젝트 틀(빌드스크립트,디렉토리 구조)등을 자동 생성
。Intellij를 통해 더욱 쉽게 생성할 수 있음
Spring Boot Starters:
。프로젝트에 필요한 여러라이브러리·프레임워크를 하나의 그룹(Starter)으로 묶어서의존성 선언을단순화해 주는Spring Boot의 편의 기능
▶빌드시Starter관련라이브러리들을 일괄적으로 내려받아프로젝트에 포함
Spring Boot Embedded Server
。Embedded Server:Application을 통해 작동시킬 수 있는내장 WAS 서버
。Spring Boot는 다양한Embedded Server를 지원하여JAR내에 설치되어JAR실행 시내장서버가 구동
▶spring-boot-starter-tomcat
▶spring-boot-starter-jetty
▶spring-boot-starter-undertow
Auto-Configuration
。기존Spring은설정의 자동화가 되지않아 추가된 기능
。Spring Application의ComponentScan등의 수많은Configuration을 자동으로 설정
▶Spring Boot 프로젝트의class path상에 존재하는framework,Annotation등의Existing Configuration을 토대로 자동화된Application Configuration을 제공.
Auto Configuration logic의 위치
。Maven Dependency의spring-boot-autoconfigure-3.2.5.jar내에서AutoConfiguration을 수행하는클래스들이 존재
▶spring-boot-autoconfigure-3.2.5.jar의org.springframework.boot.autoconfiguration.web및 하위패키지에는 에서는Web application및REST API에 관련된 모든Auto Configuration 클래스가 존재
Spring Boot DevTools
。소스코드를 변경할때 마다개발자가 수동으로 서버를 재시작해야하는 불편함을 개선한모듈
▶ 자동으로 서버를 재시작하면서 코드 변경사항을 적용
。build.gradle에 해당모듈에 대한의존성을 정의하여 기능의 사용이 가능
▶spring-boot-devtools
Be Production-Ready: 운영환경 지원
Logging
。콘솔에 표현되는log의logging level을 설정
Profiles,@ConfigurationProperties
。Application Configuration간소화
。profile별 여러 환경에 맞는 다양한 설정을 제공.
Actuator:
。Endpoint를 이용한Application의 전반적인 상태에 대한monitoring수행.