Spring Boot는 Spring Framework 기반으로 구성된 Spring을 보완하고 발전 시킨 프레임워크이다.
기존 복잡했던 Bean(XML)구조와 어려웠던 설정(Configuration)을 별도의 도구(Spring Initializr)를 통해
간편화 하고 Tomcat을 내장하였고, 각종 모듈은 편하게 add-up 하여 활용 가능하다.
※ Spring Boot는 Spring Framework 상속하고 있으며, Spring Framework가 먼저 새로운 버전이 릴리즈, Boot의 신버전이 다음에 릴리즈 됨

Spring Boot makes it easy to create stand-alone, production-grade
Spring based Applications that you can "just run".
| 구분 | Spring Framework | Spring Boot |
|---|---|---|
| 개념 | 엔터프라이즈급 SI 프로젝트에 최적화된 전통적인 웹 개발 프레임워크 | Spring Framework를 기반으로 한 RESTful 및 MSA(Microservice Architecture)에 최적화된 확장 프레임워크 |
| 설계 방법 | 전통적인 Monolithic 아키텍처 기반 (MVC 패턴 기반의 대형 프로젝트 중심) | MSA에 최적화된 구조, REST API 중심, 다양한 UI (SPA, 모바일 등)와 연동 용이 |
| 주요 특징 | XML 기반의 설정 (DI, AOP 등), 설정 유연성 높음 유연하지만 복잡한 설정 필요 | 자동 설정(Auto Configuration) 지원, 내장 Tomcat 제공, 최소 설정으로 실행 가능 (Convention over Configuration) |
| 배포 방식 | .war 파일로 외부 WAS (Tomcat, WebLogic 등)에 배포 | 내장 톰캣을 포함한 .jar 파일로 실행, 독립 실행형 애플리케이션으로 배포 가능 |
| 설정 방법 | applicationContext.xml 등 XML 설정 중심, 수동 DI 구성 필요 | application.properties 또는 application.yml 사용, Java 기반 @Configuration 클래스 활용 가능, 자동 구성 지원 |
| 프로젝트 생성/관리 | Spring Legacy Project(Spring MVC) 중심, 초기 설정과 의존성 수동 추가 필요 | Spring Initializr를 통한 빠른 프로젝트 생성, Starter 의존성을 통한 구성 자동화 |
| 권장 도구 | 템플릿 엔진: JSP Persistence: MyBatis, JDBC Template Dependency: Maven Log/Test: Log4j, JUnit 4 | 템플릿 엔진: Thymeleaf, SPA (React, Vue 등과 연동) Persistence: JPA, Hibernate Dependency: Gradle 또는 Maven Log/Test: Logback, JUnit 5, Mockito |
Gradle은 JVM 기반의 오픈소스 빌드 자동화 도구로, Groovy·Kotlin DSL을 사용해 유연하게 프로젝트
빌드 과정을 정의할 수 있다. 의존성 관리(Maven Central 등)와 멀티 프로젝트 빌드를 손쉽게 지원하며,
증분 빌드와 캐싱으로 빌드 속도를 최적화한다.
Java뿐 아니라 Kotlin, Android, Spring 등 다양한 생태계에서 표준 빌드 도구로 널리 활용된다.
→ Google이 2013년 Android Studio를 발표하면서 Gradle을 기본 빌드 도구로 채택 된 이후 활성화됨
| 항목 | Maven | Gradle |
|---|---|---|
| 빌드 스크립트 | XML 기반 POM(Project Object Model) 사용, 선언적(Declarative) | Groovy/Kotlin DSL 기반, 선언적+명령형(Declarative + Imperative) |
| 유연성 | 표준화된 라이프사이클과 구조, 사용자 정의 제약 | 자유도가 높아 복잡한 빌드/커스터마이징 용이 |
| 빌드 성능 | 전통적으로 느린 편, 증분 빌드 지원 제한적 | 증분 빌드, 빌드 캐싱, 병렬 빌드로 매우 빠름 |
| 학습 난이도 | 단순하고 진입장벽 낮음 | 문법 다양(DSL), 러닝커브 있음 |
| 플러그인/생태계 | 방대한 플러그인과 안정된 Maven Central 저장소 | 플러그인 다양, Maven 저장소 및 Gradle Plugin Portal 모두 사용 가능 |
| 적합한 환경 | 표준화된 Java 프로젝트, 비교적 단순한 빌드 | 대규모·멀티모듈·안드로이드·스프링부트 프로젝트 |
| 커뮤니티 | 오래된 생태계, 안정적 문서와 사례 풍부 | 빠르게 성장 중, 최신 사례·커뮤니티 활발 |
| CI/CD 연동 | Jenkins, TeamCity 등 전통적 환경과 궁합 우수 | 최신 DevOps 환경(CI/CD, 클라우드 빌드)과 최적화 |
Tomcat은 Apache Software Foundation에서 개발한 오픈소스 서블릿 컨테이너(Servlet Container)로,
Java Servlet과 JSP를 실행할 수 있는 환경을 제공한다.
Spring Boot에서는 톰캣이 내장 서버(Embedde)로 포함되어 별도 설치 없이 애플리케이션과 함께 실행된다.
이를 통해 WAR 배포 없이 JAR 실행만으로 웹 애플리케이션 구동이 가능해 개발·배포가 간편하다. 정적
리소스 처리와 서블릿/JSP 기반 동적 요청 처리, 세션 관리, 보안 설정 등 WAS의 핵심 기능을 지원한다.
Spring Starter(Spring initializr)는 Spring Boot에서 제공하는 Dependency Bundle으로, 특정 기능을
빠르게 사용하기 위해 필요한 라이브러리와 설정을 미리 포함한 모듈이다. spring-boot-starter-web,
spring-boot-starter-data-jpa처럼 기능별 스타터를 추가하면 즉시 개발 환경이 구성되며, 복잡한 개별
라이브러리 버전 관리가 필요 없다. 이를 통해 빠른 프로젝트 초기화와 일관된 설정 관리가 가능해진다.

| 분류 | 도구 이름 | 상세 설명 |
|---|---|---|
| 개발 | Spring Boot DevTools | 개발 편의성을 위한 도구. 코드 변경 시 애플리케이션을 자동 재시작하고, LiveReload 기능으로 브라우저 자동 새로고침. 캐시 비활성화로 빠른 피드백 제공. |
| 개발 | Lombok | 어노테이션 기반 코드 자동 생성 도구. @Getter, @Setter, @Builder 등을 사용해 Getter/Setter, 생성자, toString 메서드 자동 생성. 보일러플레이트 코드 최소화. |
| Web | Spring Web | Spring MVC 기반 웹 애플리케이션 개발 지원. REST API 및 웹 서비스 개발 가능. 내장 Tomcat 포함으로 별도 WAS 설치 없이 실행 가능. |
| Web | Thymeleaf | 서버사이드 템플릿 엔진. HTML 파일에 데이터를 바인딩해 동적 렌더링 수행. JSP를 대체하는 최신 뷰 기술로 널리 사용됨. |
| DB | Spring Data JPA | Hibernate 기반 JPA 구현. CrudRepository, JpaRepository 등으로 데이터 접근 계층 추상화. ORM 기반 엔티티 매핑 및 생산성 향상. |
| DB | PostgreSQL Driver | PostgreSQL DB와 연결하기 위한 JDBC 드라이버. Spring Boot에서 PostgreSQL 사용 시 필수 의존성. |
| IO | Validation | Hibernate Validator 기반 데이터 검증 도구. @Valid, @NotNull, @Size 등으로 VO/DTO 필드에 대한 제약 조건 검증 지원. |
| Security | Spring Security | 인증(Authentication)과 인가(Authorization) 기능 제공. 로그인, 접근 제어, 암호화, CSRF 방지 등 웹 애플리케이션 보안 전반 처리. |
| Cache | Spring Cache | 캐싱 추상화 제공. @Cacheable 어노테이션 등으로 손쉽게 캐시 적용 가능. Redis, Ehcache 등 다양한 캐시 스토리지와 연동 가능. |
| Monitoring | Spring Boot Actuator | 운영 환경 모니터링 도구. 애플리케이션 상태, 헬스 체크, 메트릭, 환경 설정 등을 엔드포인트를 통해 노출하여 운영 관리에 도움. |
| 문서화 | Spring REST Docs | 테스트 기반 REST API 문서 자동화 도구. 테스트 코드로부터 API 문서를 생성하여 실제 구현과 문서의 일관성 확보. |
| 메시징 | Spring for Apache Kafka | Kafka와의 연동을 지원하는 메시징 모듈. 이벤트 스트리밍 및 비동기 메시지 기반 시스템 구축에 활용. |
| 세션 관리 | Spring Session | 분산 환경에서 세션을 Redis 등 외부 저장소에 저장하여 서버 간 세션 공유 가능. 다중 서버 환경에 적합한 세션 관리 도구. |
| 분류 | 도구 이름 | 상세 설명 |
|---|---|---|
| 보안 | Spring Security | 인증(Authentication), 인가(Authorization), 비밀번호 암호화, CSRF 방지 등 웹 보안 기능 제공 |
| 보안 | Spring Security OAuth2 Client | OAuth2 기반 외부 인증 연동 (구글, 깃허브 등 소셜 로그인 구현 지원) |
| DB | MyBatis Framework | SQL 기반 ORM 대체 프레임워크로 명시적 SQL 쿼리 작성 가능, 복잡한 쿼리에 적합 |
| DB | PostgreSQL Driver / MySQL Driver | 프로젝트에서 사용하는 DB(PostgreSQL 또는 MySQL)와 연결하기 위한 JDBC 드라이버 |
| 배치 처리 | Spring Batch | 대용량 데이터 처리 및 배치 작업 스케줄링 지원 (Job, Step 단위 구성) |
| 배치 처리 | Quartz Scheduler | 정교한 작업 예약 및 반복 실행을 지원하는 스케줄링 프레임워크 |
| NoSQL / 세션 관리 | Spring Data Redis | Redis를 통한 데이터 접근 및 캐시/세션 저장 처리 |
| NoSQL / 세션 관리 | Spring Data MongoDB | MongoDB 문서 지향 데이터베이스 접근을 위한 Spring Data 모듈 |
| NoSQL / 세션 관리 | Spring Session | Redis 등 외부 저장소를 통한 분산 세션 관리 및 클러스터링 지원 |
| REST API | Spring HATEOAS | 하이퍼미디어(HATEOAS) 기반 REST API 지원, 응답에 링크 포함 |
| REST API | Spring Data REST Repositories | JPA/MyBatis 엔티티를 자동으로 RESTful API로 노출해주는 모듈 |
| REST API | Rest Repositories HAL Explorer | HAL 포맷 기반 REST API 탐색기, UI로 API 탐색 가능 |
| 웹/실시간 | Spring Web | Spring MVC 기반의 동기식 웹 애플리케이션 및 REST API 개발 지원 |
| 웹/실시간 | Spring WebFlux | 비동기 및 논블로킹 방식의 반응형 웹 애플리케이션 개발 (Reactor 기반) |
| 웹/실시간 | Spring WebSocket | 웹소켓 기반의 실시간 양방향 통신 지원 |
| 웹/실시간 | STOMP 지원 | WebSocket을 위한 메시징 프로토콜(STOMP) 지원 |
| 메시징 | Spring for Apache Kafka | Kafka 기반 이벤트 스트리밍 및 비동기 메시지 처리 지원 |
| 메시징 | Spring for RabbitMQ | RabbitMQ 연동 및 메시징 큐 기반의 비동기 작업 처리 지원 |
| 클라우드 / MSA | Spring Cloud Config | 분산 시스템 구성 파일을 중앙에서 관리할 수 있는 외부 설정 서버 |
| 클라우드 / MSA | Spring Cloud Netflix Eureka | 마이크로서비스 서비스 디스커버리(등록 및 검색) 기능 제공 |
| 클라우드 / MSA | Spring Cloud Gateway | MSA 환경을 위한 API Gateway. 라우팅, 필터링 기능 제공 |
| 클라우드 / MSA | Spring Cloud OpenFeign | 선언형 HTTP 클라이언트로, 인터페이스 기반으로 REST API 호출 가능 |
| 클라우드 / MSA | Spring Cloud Sleuth + Zipkin | 분산 환경에서의 로그 추적(Distributed Tracing) 및 호출 관계 분석 도구 |
Spring 프로젝트는 여러 모듈이 계층적으로 연결돼 있어, 각 모듈의 역할과 관계를 이해하는 것이 중요하다.
./gradlew dependencies 명령어로 현재 프로젝트가 참조하고 있는 라이브러리들의 계층 구조 분석 가능
Spring의 모듈은 역할별로 계층화되어 있으며, 특정 모듈은 하위 모듈을 기반으로 동작한다.