Spring Framework는 Java기반 애플리케이션 개발에서 가장 많이 사용되는 프레임워크 중 하나이고, Spring Boot는 이를 더욱 간편하게 사용할 수 있도록 설계된 확장판이다. 이번에는 Spring Boot에 대해서 한번 정리를 해보겠다.
Spring Boot란?

Spring Boot는 Spring Framework를 기반으로 한 프레임워크로, 애플리케이션 개발을 더 빠르고 간단하게 만들기 위해 설계되었다. Spring의 강력한 기능을 유지하면서도 설정과 배포를 간소화하는 데에 초점을 맞췄다.
Spring Boot의 주요 특징
1. 자동설정(Auto Configuration)
- application.properties 또는 application.yml 파일을 통해 필요한 설정을 자동으로 수행한다.
- 개발자가 대부분의 설정을 직접 작성하지 않아도 된다.
2. 내장 웹 서버(Embedded Web Server)
- Tomcat, Jetty와 같은 웹 서버를 내장하고 있어, 별도의 서버 설치 없이 실행 가능
- 애플리케이션을 독립 실행형 JAR 파일로 배포할 수 있음
3. 스타터 의존성(Starter Dependencies)
- spring-boot-starter-* 의존성을 사용해 필요한 라이브러리를 간단히 추가할 수 있음
- 예: spring-boot-starter-web 은 웹 애플리케이션 개발에 필요한 모든 의존성을 포함한다.
4. 프로덕션 준비 기능
- 애플리케이션 모니터링 및 관리 기능 제공(예:Actuator)
- 기본 제공되는 메트릭 및 상태 점검 기능으로 운영 환경에서 유용.
5. 컨벤션 중심 개발(Convention over Configuration)
- 표준화된 설정 방식을 제공하여 반복적인 설정 작업을 줄인다.
6. 빠른 개발 환경 제공
- Spring Initializr 를 통한 프로젝트 생성
- DevTools 로 애플리케이션 자동 재시작 기능 제공
Spring Framework 와 Spring Boot의 장단점
Spring Framework의 장단점
장점
- 유연성 : XML, Java Config 등 다양한 설정 방식 지원.
- 확장성 : 대규모 애플리케이션에서도 사용할 수 있는 강력한 기능 제공.
- 다양한 통합 기능 : 다양한 외부 라이브러리와의 연동 용이.
단점
- 복잡성 : 설정 파일과 의존성 관리가 복잡할 수 있음.
- 개발 속도 저하 : 수동 설정과 환경 설정 작업에 시간 소요.
Spring Boot의 장단점
장점
- 빠른 개발 속도 : 자동 설정과 내장 서버로 개발 시간 단축.
- 배포 간편성 : 독립 실행형 JAR 파일로 배포 가능.
- 초보자 친화적 : 기본 설정 제공으로 쉽게 시작 가능.
- 운영 지원 기능 : Actuator 등 프로덕션 환경에 유용한 도구 제공.
단점
- 제어부족 : 자동 설정이 모든 요구사항을 만족하지 못할 수도 있음.
- 큰 애플리케이션에서는 비효율적 : 대규모 프로젝트에서는 세부 설정이 필요할 수 있음.
Spring Framework VS Spring Boot
개발 기획단계에서 Spring Framework를 선택할 지, Spring Boot를 선택할 지에 대해서 고민이 많을 것 같다. 개발 기획 단계에서 프로젝트의 특성에 따라 언어를 선택하는 것이 좋을 것 같아 정리를 해두었다.
Spring Framework 를 선택해야 할 때
1. 대규모 애플리케이션 개발
- 복잡하고 커스터마이징이 필요한 애플리케이션
- 세밀한 제어와 설정이 중요한 프로젝트
2. 기존 Spring 프로젝트 유지/확장
- 기존의 sprign 기반 애플리케이션을 유지하거나 확장해야 하는 경우
3. 특정 설정 방식이 필요한 경우
- XML 기반 설정이나 Java Config의 유연성을 활용해야 할 때.
Spring Boot를 선택해야 할 때
1. 빠른 프로토타입 개발
- 초기 MVP(Minimum Viable Priduct) 또는 빠른 프로토타이핑이 필요한 경우
2. 소규모/중소규모 프로젝트
- 상대적으로 작은 애플리케이션이나 RESTful API 개발
3. 단일 서비스 아키텍처 개발
- 독립적으로 실행 가능한 애플리케이션(JAR 배포)이나 마이크로서비스 개발.
4. 초보자 개발 환경
- Spring 생태계에 익숙하지 않은 초보 개발자가 시작할 때.
추가적으로 알아두면 좋은 내용
Spring Initializr
Spring Boot Actuator
- 애플리케이션 상태 점검과 모니터링에 유용한 기능을 제공한다.
- /actuator/health로 애플리케이션 상태 확인.
- 애플리케이션 변경 사항을 자동으로 감지하고 재시작하는 기능을 제공한다.
- 빠른 개발 사이클 유지에 유용하다.
스프링 입문자로써 나는 스프링 부트를 사용하여 개발을 시작해보려한다..! 다음엔 Spring Boot를 사용하여 환경셋팅 및 간단한 API 생성하는 과정을 포스팅 해야겠다.