스프링 프레임워크
- DI 컨테이너, MVC, DB 접근 기술 등 수 많은 기능을 제공하고 다양한 문제 해결
- 다양한 라이브러리들을 편리하게 사용할 수 있도록 통합
- 개발자의 생산성이 높아짐, 사용범위 확대
- 자바 생태계의 사실상 표준 프레임워크
- 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트
- 웹 기술: 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합: 캐시, 이메일, 원격접근, 스케줄링
- 테스트: 스프링 기반 테스트 지원
- 스프링과 그 생태계가 점점 커짐
- 스프링의 기능도 점점 많아짐
- 다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야함
- 스프링으로 프로젝트를 시작할 때 필요한 설정이 점점 늘어남
- 스프링으로 프로젝트를 시작하는 것이 점점 어려워짐
- 시작도 하기 전에 복잡한 설정 때문에 포기
스프링 부트
스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
관례에 의한 간결한 설정
스프링 부트 - 핵심 기능 5가지
- WAS: Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 라이브러리 관리
손쉬운 빌드 구성을 위한 스타터 종속성 제공
스프링과 외부 라이브러리의 버전을 자동으로 관리
- 자동 구성: 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동 등록
- 외부 설정: 환경에 따라 달라져야 하는 외부 설정 공통화
- 프로덕션 준비: 모니터링을 위한 메트릭, 상태 확인 기능 제공
스프링 프레임워크와 스프링 부트
• 스프링 부트는 스프링 프레임워크를 쉽게 사용할 수 있게 도와주는 도구일 뿐이다!
• 본질은 스프링 프레임워크
• 하지만 스프링 부트가 제공하는 편의 기능이 너무 막강해서 스프링 부트 사용은 필수
스프링 부트는 편리하지만, 너무 많은 것을 자동화
최소한 스프링 부트가 어떤 원리로 작동하는지 알아두어야 함