Spring Logo

Spring, Spring Boot, 그리고 Spring Batch는 Java 기반의 애플리케이션 개발을 위한 강력한 프레임워크입니다. 각 프레임워크의 주요 개념과 특징을 아래에 정리하였습니다.


◎ Spring Framework

1. 개요
  • Spring Framework는 Java 엔터프라이즈 애플리케이션을 개발하기 위한 경량화된 오픈 소스 프레임워크입니다.
  • 주요 목표는 개발자가 느슨하게 결합된 애플리케이션을 쉽게 개발할 수 있도록 하는 것입니다.


2. 주요 특징
  • DI (Dependency Injection): 객체 간의 의존성을 외부에서 주입하여 객체 간 결합도를 낮춤.
  • AOP (Aspect-Oriented Programming): 횡단 관심사를 모듈화하여 코드 중복을 줄임.
  • POJO (Plain Old Java Object): 비침투적 개발을 통해 순수한 Java 객체로 개발 가능.
  • IoC (Inversion of Control): 객체의 생성과 관리를 개발자가 아닌 Spring Container가 처리.


3. 주요 모듈
  • Spring Core: DI 및 IoC 컨테이너 제공.
  • Spring AOP: 애플리케이션의 AOP 기능 제공.
  • Spring MVC: 웹 애플리케이션 개발을 위한 MVC 패턴 지원.
  • Spring Security: 인증 및 권한 관리.
  • Spring Data: 데이터베이스 접근을 위한 통합 API 제공.


◎ Spring Boot

1. 개요
  • Spring Boot는 Spring Framework를 쉽게 사용할 수 있도록 돕는 프레임워크입니다.
  • "Convention over Configuration" (관례를 따른 설정) 원칙을 따릅니다.
  • 내장 서버(Tomcat, Jetty 등)를 통해 실행 가능한 JAR 파일을 생성할 수 있습니다.


2. 주요 특징
  • 자동 설정 (Auto Configuration): 대부분의 설정이 자동으로 처리됨.
  • 스타터 종속성 (Starters): 프로젝트에서 필요한 의존성을 손쉽게 추가할 수 있음. (예: spring-boot-starter-web)
  • 내장 서버: Tomcat, Jetty, Undertow 등 내장된 웹 서버로 독립 실행 가능.
  • Production-ready Features: Actuator를 통해 모니터링, 헬스 체크, 메트릭스 제공.
  • Spring Initializr: 웹 기반 프로젝트 생성 도구.


◎ Spring Batch

1. 개요
  • Spring Batch는 대량 데이터 처리 (ETL - Extract, Transform, Load) 및 배치 작업을 위한 프레임워크입니다.
  • 주로 정기적으로 실행되는 데이터 처리 작업(예: 일일 보고서 생성, 데이터 마이그레이션 등)에 사용됩니다.


2. 주요 특징
  • Job/Step 구조:
    • Job: 배치 작업의 전체 실행 단위.
    • Step: Job 내부에서 개별적으로 실행되는 단계.
  • Chunk-Oriented Processing: 데이터를 청크 단위로 읽고 처리 후 쓰기.
  • Retry/Skip 기능: 에러 발생 시 자동 재시도 또는 건너뛰기 가능.
  • 다양한 데이터 소스 지원: JDBC, JPA, 파일, API 등.


3. 실행 구조
  • JobLauncher: Job 실행을 담당.
  • JobRepository: Job 상태 및 메타데이터 저장.
  • ItemReader/ItemProcessor/ItemWriter: 각 청크의 데이터 처리 로직 구성.


◎ Spring, Spring Boot, Spring Batch 비교

특징 Spring Spring Boot Spring Batch
목적 DI, AOP, 웹 애플리케이션 개발 Spring 설정 및 실행 간소화 대용량 데이터 처리 (배치 작업)
설정 XML, Java Config Auto Configuration Java Config
서버 외부 서버 (Tomcat 등) 내장 서버 (Tomcat 등) 독립적으로 실행 가능
의존성 수동 추가 Starter 의존성 사용 Batch 관련 의존성 (spring-batch)
주 사용 사례 웹 애플리케이션, API 마이크로서비스, REST API 데이터 마이그레이션, 정기 작업