- Spring Framework : 엔터프라이즈 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 스프링 프로젝트 중 하나
- Spring Boot : 스프링 프레임워크 설정의 복잡함으로 인해 Spring 기반 애플리케이션 개발의 어려움을 해결하기 위한 스프링 프로젝트 중 하나
Spring Boot을 사용해야 하는 이유
우리가 Spring Boot을 사용해야하는 현실적인 이유는 다음과 같습니다.
- 의존 라이브러리의 자동 관리
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-jdbc' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.h2database:h2' }
Spring Boot에서 웹 애플리케이션을 개발하기 위한 기본적인 의존 라이브러리 설정 예다.
단 네 줄의 의존 라이브러리 설정을 통해 Spring 애플리케이션 구현 시 필요한 의존 라이브러리를 포함하고 있다.
- 애플리케이션 설정의 자동 구성
- 내장된 WAS를 통한 손쉬운 배포
개발한 애플리케이션 구현 코드를 손쉽게 빌드하여 여러분들이 직접 빌드 결과물을 War 파일 형태로 WAS(Web Application Server)에 올릴 필요가 없다.- WAS(Web Application Server)란?
Java 기반의 웹 애플리케이션을 배포하는 일반적인 방식은 개발자가 구현한 애플리케이션 코드를 WAR(Web application ARchive) 파일 형태로 빌드한 후에 WAS(Java에서는 서블릿 컨테이너라고도 부릅니다)라는 서버에 배포해서 해당 애플리케이션을 실행하는 것입니다. (Java 진영에서 사용되는 대표적인 WAS에는 Tomcat이 있습니다)
Spring Boot을 사용하면 ‘java -jar <jar 파일명>.jar’ 명령어를 통해 여러분들이 만든 애플리케이션을 손쉽게 실행할 수 있다.
추가학습
Spring Boot에서 사용할 수 있는 서블릿 컨테이너는 어떤 것들이 있는가? dispatcherServelt.
서블릿(Servlet)이란?
서블릿은 웹 프로그래밍을 위한 자바 기술이다.
- Servlet 클래스 구현 규칙을 지켜야 한다.
- HTTP Request를 처리하고 Response할 수 있는 기술이다.
- 정적인 웹사이트를 동적인 웹사이트로 바꿀 수 있게 도와준다.
서블릿 컨테이너(Servlet Container)란?
서블릿을 관리하는 역할을 한다. 여기서 관리란 서블릿을 실행, 생성, 소멸 등의 관리를 말한다. 보통 자바 프로그램은 main() 메소드를 호출하여 자체적으로 프로그램을 실행했다. 하지만 서블릿은 스스로 실행할 수 없다. 서블릿 컨테이너가 실행해줘야 한다. 서블릿은 Request를 처리한다고 했는데 즉 Request를 처리하기 위한 서블릿을 실행하고 관리하는 것이 서블릿 컨테이너라고 할 수 있다. 또한 이렇게 실행(제어, Control)이 서블릿 컨테이너에게 넘어간 것(역전, Inversion)을 제어의 역전(IoC, Inversion of Control)이라고 한다.
서블릿 컨테이너 특징
- 서블릿 생명주기(Life Cycle) 관리
- 서블릿 클래스 로딩하여 인스턴스화
- 초기화 메소드 호출
- 요청 들어오면 적절한 서블릿 메소드 호출
- 서블릿 소멸시 GC(가비지 컬렉션) 실행
- 웹서버와의 통신 지원
- 웹서버와 서블릿이 쉽게 통신할 수 있게 해주어 소켓을 만들고 listen, accept 등을 API로 제공하여 복잡한 과정 생략
[ Dispatcher-Servlet(디스패처 서블릿) 이란? ]
디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.
클라이언트 요청으로부터 DispatchServlet의 전체 흐름
1. 클라이언트의 요청을 디스패처 서블릿이 받음
2. 요청 정보를 통해 요청을 위임할 컨트롤러를 찾음
3. 요청을 컨트롤러로 위임할 핸들러 어댑터를 찾아서 전달함
4. 핸들러 어댑터가 컨트롤러로 요청을 위임함
5. 비지니스 로직을 처리함
6. 컨트롤러가 반환값을 반환함
7. 핸들러 어댑터가 반환값을 처리함
8. 서버의 응답을 클라이언트로 반환함
디스패처 서블릿을 통해 요청을 처리할 컨트롤러를 찾아서 위임하고, 그 결과를 받아오는구나..
참고 사이트 : https://mangkyu.tistory.com/18