스프링 부트 소개
스프링 부트(Spring Boot)는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립 실행형
애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음
스프링 ≠ 스프링 부트
스프링 부트의 핵심 목표
•
매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공
•
강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형 가능
•
프로젝트에서 필요로 하는 다양한 비기능적인 기술 (내장형 서버, 보안, 메트릭, 상태 체크, 외부 설정 방식 등)
•
코드 생성이나 XML 설정을 필요로 하지 않음
컨테이너리스(Containerless) 개발
“컨테이너 없는” 웹 애플리케이션 아키텍처란?
스프링 애플리케이션 개발에 요구되는 서블릿 컨테이너의 설치, WAR 폴더 구조, web.xml, WAR 빌드, 컨테이너로 배치, 포트 설정, 클래스로더, 로깅 등과 같은 필요하지만 애플리케이션 개발의 핵심이 아닌 단순 반복 작업을 제거해주는 개발 도구와 아키텍처를 지원한다.
설치된 컨테이너로 배포하지 않고 독립실행형(stand alone) 자바 애플리케이션으로 동작
강한 주장을 가진(opinionated) 도구
스프링 부트의 설계 철학
•
Opinionated - 자기 주장이 강한, 자기 의견을 고집하는, 독선적인
•
일단 정해주는 대로 빠르게 개발하고 고민은 나중에
•
스프링을 잘 활용하는 뛰어난 방법을 제공
스프링 프레임워크의 설계 철학
•
극단적인 유연함 추구
•
다양한 관점을 수용
•
Not opinionated
•
수많은 선택지를 다 포용
사용 기술과 의존 라이브러리 결정
•
업계에서 검증된 스프링 생태계 프로젝트, 표준 자바 기술, 오픈소스 기술의 종류와 의존관계, 사용 버전을 정해줌
•
각 기술을 스프링에 적용하는 방식(DI 구성)과 디폴트 설정값 제공
유연한 확장
•
스프링 부트에 내장된 디폴트 구성을 커스터마이징하는 매우 자연스럽고 유연한 방법 제공
•
스프링 부트가 스프링을 사용하는 방식을 이해한다면 언제라도 스프링 부트를 제거하고
원하는 방식으로 재구성 가능
•
스프링 부트처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 만들기 가능
스프링 부트의 이해
스프링 부트를 이용한 개발의 오해와 한계
•
애플리케이션 기능 코드만 잘 작성하면 된다.
•
스프링을 몰라도 개발을 잘 할 수 있다.
•
스프링 부트가 직접적으로 보여주지 않은 것은 몰라도 된다.
•
뭔가 기술적인 필요가 생기면 검색을 해서 해결한다.
스프링 부트를 이해하게 되면
•
스프링의 기술을 어떻게 활용하는지 배우고 응용할 수 있다.
•
스프링 부트가 선택한 기술, 자동으로 만들어주는 구성, 디폴트 설정이 어떤 것인지 확인할 수 있다.
•
필요할 때 부트의 기본 구성을 수정하거나, 확장할 수 있다.
•
나만의 스프링 부트 모듈을 만들어 활용할 수 있다.