Spring / Spring Framework / Spring Boot 개념 정리

donghyeoneom·2026년 1월 31일
post-thumbnail

Spring을 사용하다 보면 자연스럽게 이런 표현들을 섞어 쓰게 됩니다.
“Spring으로 개발한다”
“Spring Boot 프로젝트다”
“Spring Framework 기능이다”
하지만 이 세 가지는 같은 말이 아니고, 개념 레벨도 다릅니다.
이 글에서는 Spring → Spring Framework → Spring Boot를 하나의 흐름으로 정리합니다.


1. Spring이란 무엇인가?

Spring은 특정 라이브러리나 도구 이름이 아니라,
애플리케이션 설계를 위한 철학에 가깝습니다.

Spring의 핵심 목표

  • 객체 간 결합도를 낮춘다
  • 테스트하기 쉬운 구조를 만든다
  • 엔터프라이즈 애플리케이션의 복잡도를 관리한다

이를 위해 Spring은 다음 개념을 중심으로 설계되었습니다.

핵심 개념

  • IoC (Inversion of Control, 제어의 역전)
  • DI (Dependency Injection, 의존성 주입)

객체의 생성과 의존성 관리를 개발자가 아닌 컨테이너가 담당한다는 개념
즉, Spring = 객체를 어떻게 만들고 연결할 것인가에 대한 설계 철학


2. Spring Framework란 무엇인가? (구현체)

Spring Framework는 위에서 말한 Spring 철학을 실제로 구현한 프레임워크입니다.

주요 구성 모듈

  • Core Container (Bean, IoC Container)
  • AOP
  • Data Access (JDBC, ORM 연동)
  • Transaction Management
  • Web (Spring MVC)

보통 “전통적인 Spring”이라고 부르는 것이 바로 Spring Framework입니다.


3. Spring Boot란 무엇인가? (자동화 도구)

Spring Boot는 Spring Framework를 쉽고 빠르게 사용하기 위한 도구입니다.

Spring Boot의 등장 배경

  • Spring 설정이 너무 복잡해짐
  • XML/Java Config가 과도하게 증가
  • 서버(WAS) 설정까지 개발자가 직접 관리

Spring Boot의 핵심

“Spring 애플리케이션을 설정 없이, 바로 실행 가능하게 만들자"

① Auto Configuration

  • Classpath에 존재하는 라이브러리를 기준으로
  • 필요한 Bean을 자동으로 구성
  • 조건 기반 설정 (@ConditionalOn...)

② Gradle 의존성 관리

gradle spring-boot-starter-web

  • 관련 라이브러리를 묶어서 제공
  • 의존성 충돌 최소화
  • 버전 관리 일원화/편의성 제공(Maven/Gradle → 라이브러리를 classpath에 올려주는 역할)

③ Embedded Server

  • Tomcat, Jetty, Undertow 내장
  • 별도 WAS 설치 불필요
  • 애플리케이션 자체가 실행 단위

4. 전체 관계 정리

Spring (설계 철학) → 객체 관리와 의존성 설계에 대한 철학
 └─ Spring Framework (구현체) → Spring 철학을 구현한 핵심 프레임워크
     └─ Spring Boot (자동화 & 생산성) → Spring Framework를 빠르게 사용하기 위한 자동화 도구

0개의 댓글