[인프런] 토비의 스트링
스프링 부트
스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립 실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음
스프링 부트로 독립 실행형 스프링 애플리케이션을 개발하는 것
스프링 != 스프링 부트
스프링 부트의 핵심 목표
- 매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공
- 빠르고 고민 없이 개발할 수 있게 해준다 = 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공한다
- 비기능적인 기술(보안, 메트릭, 상태 체크, 외부 설정 방식 등)을 제공
- 코드 생성이나 XML 설정을 필요로 하지 않음
컨테이너리스 개발 (Containerless)
스프링 부트는 컨테이너리스 웹 애플리케이션 아키텍처를 스프링이 지원해줬으면 한다는 한 개발자의 요청으로 시작됨
컨테이너리스란? 개발자가 컨테이너 관리를 신경쓰지 않아도 되도록 하는 것
- Container란 ?
- Spring = IOC Container
- Web Container = Servlet Container
- Web Component = Servlet
Spring 동작 방법
- Servlet Container 안에 여러 Servlet(회원가입기능, 게시판기능, 로그인기능 등등)들이 존재
- Client가 요청하면 Servlet Container에서 Servlet을 연결하고 Servlet은 동적인 컨텐츠(Dynamic Contents)를 만들어 Client에게 응답
- Spring Container는 Servlet Container 뒤에 존재하고, Spring Container 안에 여러 Bean들이 존재
- Spring Container 안에서 Application이 동작
- 참고 : 자바의 표준 웹 기술을 사용하려면 Servlet Container가 존재해야 하고, Spring Container는 이를 대체할 수 없음
컨테이너의 역할
- 웹 컴포넌트들을 관리 (라이프 사이클 관리, 일생주기 관리)
- Client로부터 들어온 요청을 어느 컴포넌트가 담당할지 결정해서 연결해주는 작업 (Routing, Handler Mapping)
Spring boot는 ?
- Spring으로 Application을 띄우려면
- web.xml 파일 작성 필요
- WAR(Web Application Archive) 형식의 파일로 빌드 필요
- 폴더 구성 설정 필요
- Servlet Container는 독립적인 서버 프로그램으로, Tomcat 같은 서버를 환경에 맞게 설치하고 실행시켜 war 파일로 압축된 Servlet Application을 배포하는 작업 필요
- Servlet Container가 실행되어야 Servlet Container를 통해 Spring Container를 호출 가능
- 간단한 웹 페이지를 띄울때도 위와 같은 과정이 필요하고, 개발자가 Spring으로 Application 개발하는 것에만 집중해 개발하고 싶어 만들어진 것이 Spring boot
- Spring boot는 ?
- 설치된 컨테이너로 배포하지 않고, 독립실행형 자바 애플리케이션으로 동작
- main 메소드만 실행시키면 web.xml 설정 ~ Servlet Container 실행까지 자동으로 동작
Opinionated
강한 주장을 가진 (opinionated) 도구
내가 다 정해줄게, 일단 개발만 해!
Spring boot가 정해주는 기술은 ?
- Application에서 사용할 기술
- 의존 라이브러리
- 사용 버전
- 각 기술을 Spring에 적용하는 방식(DI 구성)과 Default 설정 값 제공
Spring boot의 유연한 확장
- Srping boot에 내장된 Default 구성을 커스터마이징하는 유연한 방법 제공
- Spring boot가 Spring을 사용하는 방식을 이해한다면, 언제라도 Spring boot를 제거하고 원하는 방식으로 재구성 가능
- Spring boot처럼 기술과 구성을 간편하게 제공하는 나만의 모듈 작성 가능
Spring boot의 이해
- Spring boot가 제공하는 기술 조합과 구성으로 빠르게 시스템 개발을 시작 가능
- 하지만 Spring boot가 어떻게, 무엇을 제공하는지 모르면 작은 기술적인 요구 변화에도 한계점에 도달
- Spring boot가 어떻게 Spring 기술을 활용하는지 이해해야 활용 가능
'STUDY > Spring' 카테고리의 다른 글
[토비의 스프링부트 - 이해와 원리] 독립 실행형 서블릿 애플리케이션 (0) | 2024.03.07 |
---|---|
[토비의 스프링부트 - 이해와 원리] 스프링 부트 시작하기 (0) | 2024.02.17 |
[Spring boot] 간단한 API 개발 (0) | 2023.12.09 |
[Spring] Spring, MariaDB, MyBatis 연동 (0) | 2023.12.09 |
[Spring] MariaDB, MySQL Workbench 설치하기 (0) | 2023.12.09 |