JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
무료 강의온라인 강의프로그래밍 과외책/전자책
유튜브블로그
후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초

Spring Batch의 필요성

Spring Batch를 왜 배우는걸까?
[보충자료] 현존하는 최고의 배치 툴 : Spring Batch 6.x

Spring Batch의 핵심 컴포넌트

스프링 배치의 핵심 컴포넌트 - Job, Step, Repository, Operator
[실습] 스프링 배치 프로젝트 생성(Spring Boot 4.x & Gradle)
[실습] 카페 시뮬레이션으로 익히는 Job 구성과 실행 흐름

배치 처리의 방법1 - Tasklet 지향 처리

Tasklet 지향 처리란?
[실습] Tasklet 인터페이스로 단일 배치 작업 처리하기
트랜잭션 처리가 불필요한 배치는 어떻게 만들까?
[실습] 오래된 접속 로그 자동 삭제 하는 기능 구현하기

배치 처리의 방법2 - Chunk 지향 처리

Chunk 지향 처리란?
ItemReader란? / ItemProcessor란? / ItemWriter란?
[실습] 실무 배치의 90% Reader, Processor, Writer를 활용한 청크 지향 처리 실습
청크가 마지막을 판단하는 기준은 뭘까?

배치 작업의 입력값 JobParameters & Step Scope 어노테이션

JobParameters란?
[실습] JobParameters로 날짜 전달 받는 동적 배치 만들어보기
@StepScope 어노테이션을 붙이는 이유

배치의 감시자 Listener

리스너(Listener) : 배치의 CCTV
JobExecutionListener란? / StepExecutionListener란 ?
[실습] 배치 리스너 인터페이스와 어노테이션으로 구현해보기
[실습] 배치 실패시 서버 담당자에게 메일 보내주기

최종프로젝트 : Spring Batch를 통한 정산 시스템 구축 (100만 건 데이터 처리)

[실습] 배달 플랫폼 '배달의 시니' 정산 시스템 요구사항 정의서
[실습] 최종 프로젝트 생성(스프링 4.0, 스프링배치 6.0, Gradle, Spring Data JPA)
[실습] 주문, 정산 도메인 설계
[실습] 100만건 샘플 더미 데이터 삽입
[실습] ItemReader 구현하기
[실습] ItemProcessor 구현하기
[실습] ItemWriter 구현하기
아키텍쳐 구조로 보는 배치 작업
[실습] Step과 Job 등록하기
[보충자료] 크론(Cron) 표기법 가이드
[실습] 스케줄러 등록하기

현업에서 많이 사용하는 Jenkins를 연동한 Spring Batch

[실습] 배치 Listener 적용하기
[실습] Jenkins 연동을 위한 메인 메소드 및 환경설정 수정
[실습] 실행 파일(JAR) 빌드하기
[실습] Jenkins 설치 및 설정
[실습] Jenkins에 배치 등록하기(윈도우 사용자)
[실습] Jenkins에 배치 등록하기(맥 사용자)
[실습] Jenkins 빌드 구동 확인하기
← 블로그 목록으로 돌아가기

[실습] Jenkins 연동을 위한 메인 메소드 및 환경설정 수정

JSCODE 시니
JSCODE 시니
2026. 04. 04.
author
JSCODE 시니
category
Spring Batch
createdAt
Feb 7, 2026 01:14 AM
isPublic
isPublic
series
Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초
slug
configuring-main-method-for-jenkins-integration
type
post
updatedAt
Apr 4, 2026 10:00

✅ 1. 메인 메소드 변경

public static void main(String[] args) { System.exit(SpringApplication.exit(SpringApplication.run(SettlementApplication.class, args))); }
  • 스프링 배치가 실행된 결과(성공/실패)를 운영체제나 외부 스케줄러(Jenkins, Airflow 등)에게 정확하게 알려주기 위해서 작성하는 표준 패턴
  • 웹 애플리케이션은 서버가 계속 켜져있어야 하지만, 배치는 작업을 마치고 꺼지는 것이 목표이기 때문에 어떻게 꺼지는지가 중요함.
  • 0 : 정상종료
  • 1(0이 아닌 수) : 비정상 종료
 
 

✅ 2. 어노테이션 삭제

package com.batch.settlement; // @EnableScheduling 해당 배치를 실행시키는 주체가 스프링일때만 @SpringBootApplication public class SettlementApplication { public static void main(String[] args) { System.exit(SpringApplication.exit(SpringApplication.run(SettlementApplication.class, args))); } }
👩‍💼
@EnabledScheduling 어노테이션을 제거하는 이유는, 우리가 이 배치의 실행 주도권을 스프링 부트에서 젠킨스로 넘기기 때문입니다.
기존의 방식이 24시간동안 서버를 켜놓고 해당 시간이 되면 배치를 돌려주는 방식이라면, 젠킨스는 해당 시간에 자바 프로그램만 잠시 실행했다가 꺼주기 때문에, 서버 자원을 보다 효율적으로 관리할 수 있습니다.
 
 

✅ 3. application.yml 파일 변경

spring: batch: jdbc: initialize-schema: always job: enabled: true #false => true로 변경
  • 젠킨스로 해당 job을 실행하기 위해 enabled의 값을 true로 변경해준다.
 
📎
이 글은 Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초 강의의 수업 자료 중 일부입니다.