현업에서 “Spring이랑 Spring Boot가 뭐가 다른가요?”라는 질문을 자주 받는다. 팀 내에서도 신규 웹 서비스는 Spring Boot로 시작하지만, 유지보수 등 대부분 프로젝트는 레거시/특수 환경에서 순수 Spring Framework만 쓰는 경우도 많이 남아 있다. 이 글은 내가 실제로 구분·선택하는 기준을 정리한 것이다.
✅ 1. 한 줄 정의
- Spring Framework: DI/AOP 등 핵심 인프라를 제공하는 애플리케이션 프레임워크(기반). 세밀 설정과 조립을 개발자가 주도.
- Spring Boot: Spring을 빠르게 쓰도록 자동설정(Auto-configuration), 스타터(Starter), 내장 서버 등을 제공하는 실행 편의 프레임워크
✅ 2. 핵심 차이
| 구분 | Spring Framework | Spring Boot |
| 설정 방식 | XML/자바 설정을 수동 구성 | 자동설정 기본 + 필요한 것만 덧입힘 |
| 의존성 추가 | 라이브러리 개별 선택/버전 정합 직접 관리 | Starter 의존성으로 기능 단위 일괄 추가(예: spring-boot-starter-web) |
| 실행 방식 | 외부 WAS(Tomcat 등) 배포가 일반적 | 내장 서버(Tomcat/Jetty/Undertow)로 바로 실행 가능 |
| 설정 파일 | 전통적 XML/자바 설정 위주 | application.properties |
| 부트스트랩 | 개발자가 Main/WAR 구성, 컨텍스트 조립 | @SpringBootApplication로 부팅 진입점 간단화 |
✅ 3. 언제 무엇을 쓸까
- 새 웹 서비스/내부 API, 마이크로서비스 → Spring Boot 권장: 자동설정/Starter/내장 서버/운영 자동화(Actuator 등)로 개발·운영 속도가 빠르다.
- 레거시 연동, WAS 정책이 엄격한 환경, 프레임워크 학습/연구용 → Spring: 세밀 제어가 필요하거나 플랫폼 제약이 강하면 유리.
Spring: MVC, Jackson, 서버 설정 등을 직접 엮음
Boot: spring-boot-starter-web 하나로 MVC+Jackson+내장Tomcat 바로 사용
✅ 4. 용어 및 개념 정리
- Starter: 관련 라이브러리를 기능 묶음으로 제공하는 의존성(웹, JPA, 보안 등).
- Auto-configuration: 스프링 컨텍스트를 합리적 기본값으로 자동 구성.
- Actuator: 헬스체크·메트릭 등 운영 관측 기능 제공.
- 내장 서버: 외부 WAS 없이 JAR로 바로 실행.
'개발' 카테고리의 다른 글
| [Spring MVC] DispatcherServlet과 Interceptor 연결 문제 해결 (0) | 2025.11.26 |
|---|---|
| [Spring Boot] Eclipse Run Configurations의 Profile이란? (0) | 2025.10.19 |
| [Spring MVC] @RequestParam vs @RequestMapping (1) | 2025.08.16 |
| [Spring/Web] 400 에러, GET vs POST (0) | 2025.08.12 |
| [Maven] Maven, clean install, clean package 이란 (0) | 2025.08.05 |