1-1 스프링 부트 소개스프링 부트의 핵심 목표는?1-2 스프링 부트의 역사Containerless ?Opinionated스프링 프레임웤 설계 철학스프링 부트의 설계 철학사용 기술과 의존 라이브러리 결정스프링 부트의 이해
1-1 스프링 부트 소개
- 스프링 부트는 스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모음이다
스프링 ≠ 스프링 부트
스프링 부트의 핵심 목표는?
- 매우 빠르고 광범위한 영역의 스프링 개발 경험을 제공
- 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형 가능
- 프로젝트에서 필요로 하는 다양한 비기능적인 기술(내장형 서버, 보안, 매트릭, 상태 체크, 외부 설정 방식 등)제공
- 코드 생성이나 XML 필요없음
1-2 스프링 부트의 역사
- 2012년 스프링 프레임워크 프로젝트에 이슈로 등록된 Containerless 웹 애플리케이션 아키텍처의 지원에서 시작됨
Containerless ?
- 컨테이너리스 웹 애플리케이션 아키텍처를 지원해줬으면 좋겠다는 의견에 스프링 부트가 시작됨
- Serverless와 유사함
- Container : 스프링은 IoC Container라고 한다. 즉 여기서 Container는 아래와 같다.
- Web Client <> Web Component(다이나믹 컨텐츠를 만들어줘야하는 역할)
- Web Component는 Web Container 안에 있어야함
- 자바에서는 Web Component = Servlet
- Servlet을 관리하는게 Servlet Container(톰캣)
- 특정 서블릿이 처리할 수 있도록 컨테이너에서 매핑(라우팅)해줌
- 스프링 컨테이너는 뭔가 ?
- Servlet < > Bean이라고 칭하게 됨
- 여러개의 빈을 가지고 있는 Spring Container이 뒤에 있음
- 자바 표준 상 서블릿 컨테이너는 필요함 스프링 컨테이너로 대체할 순 없음
Opinionated
내가 다 정해줄게 일단 개발만 해 !
스프링 프레임웤 설계 철학
- 극단적인 유연함 추구
- 다양한 관점을 수용
- Not opinionated
- 수많은 선택지를 다 포용
- 하지만 . . .?
스프링 부트의 설계 철학
Opinionated - 자기 주장이 강한, 의견을 고집
일단 정해주는 대로 빠르게 개발하고 고민은 나중에
스프링을 잘 활용하는 뛰어난 방법을 제공함
사용 기술과 의존 라이브러리 결정
업계에서 검증된 스프링 생태계 프로젝트, 표준 자바 기술, 오픈소스 기술의 종류와 의존 관계, 사용 버전을 정해줌
각 기술을 스프링에 적용하는 방식(DI 구성)과 디폴트 설정값 제공