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

경기도 화성시 동탄대로 22길 30

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 빌드 구동 확인하기
← 블로그 목록으로 돌아가기

[보충자료] 크론(Cron) 표기법 가이드

JSCODE 시니
JSCODE 시니
2026. 04. 04.
author
JSCODE 시니
category
Spring Batch
createdAt
Feb 7, 2026, 10:13 AM
isPublic
isPublic
series
Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초
slug
spring-batch-cron-expression-guide
type
post
updatedAt
Apr 4, 2026 10:00
크론 표기법은 배치 프로그램이나 스케줄러를 실행할 때, "언제 실행할지"를 컴퓨터에게 알려주는 시간 표기법이다. 스프링(Spring)에서는 리눅스 표준(5자리)과 달리 초(Second)가 포함된 6자리 형식을 사용한다.
 
 

✅ 1. 필드 구성 (순서 중요)

스프링 크론은 총 6개의 필드로 구성되며, 공백으로 구분한다.
형식: 초 분 시 일 월 요일
순서
필드명
허용 값
허용 특수문자
1
초 (Seconds)
0 ~ 59
, - * /
2
분 (Minutes)
0 ~ 59
, - * /
3
시 (Hours)
0 ~ 23
, - * /
4
일 (Day of Month)
1 ~ 31
, - * / ?
5
월 (Month)
1 ~ 12 (JAN-DEC)
, - * /
6
요일 (Day of Week)
1 ~ 7 (MON-SUN)
, - * / ?
👩‍💼
참고: 요일에서 1은 일요일(SUN)을 의미하는 경우도 있고 월요일(MON)인 경우도 있으니, 가급적 MON, TUE같은 문자를 사용하는 것이 명확합니다. (스프링에서는 1=MON, 7=SUN 인 경우가 많으나 버전/라이브러리 확인 필요)
 
 

✅ 2. 특수문자 의미

기호
설명
예시
*
모든 값 (All)
매 초, 매 분, 매 시 등 모든 시점을 의미
?
특정 값 없음 (No Specific)
일(Day)이나 요일(Week) 필드에서 "상관없음"을 지정할 때 사용
-
범위 (Range)
10-12 (10시, 11시, 12시)
,
목록 (List)
MON,WED,FRI (월, 수, 금)
/
간격 (Step)
0/10 (0분부터 시작해서 10분마다)
 
 

✅ 3. 크론 표기법 예제

매일 / 매월 실행
# 매일 새벽 4시 정각 (우리 프로젝트 정산 시간!) 0 0 4 * * * # 매일 자정 (00:00:00) 0 0 0 * * * # 매월 1일 새벽 2시 0 0 2 1 * * # 매년 12월 25일 자정 (크리스마스) 0 0 0 25 12 *
반복 실행 (Interval)
# 10분마다 실행 0 0/10 * * * * # 1분마다 실행 0 0/1 * * * * # 매일 오후 2시부터 2시 55분까지 5분마다 0 0/5 14 * * *
요일 지정
# 매주 월요일 오전 10시 0 0 10 * * MON # 평일(월~금) 아침 9시 출근 시간 0 0 9 * * MON-FRI # 주말(토, 일) 정오 12시 0 0 12 * * SAT,SUN
 
 

✅ 4. 크론 표기법을 쉽게 작성하는 방법

스프링 제공 매크로
복잡한 크론 식 대신, 스프링부트에서는 간단한 문자열 매크로도 지원함. (단, @Scheduled 어노테이션 사용 시)
  • @Scheduled(cron = "@daily") : 매일 자정 실행
  • @Scheduled(cron = "@hourly") : 매 시간 정각 실행
 
크론 생성기 웹사이트
머리로 계산하지 말고, 생성기를 활용해서 검증할 수 있다.
  • Crontab Guru (추천): https://crontab.guru/
    • (주의: 여기는 리눅스 표준 5자리라서 '초' 단위가 없음. 맨 앞의 '0'을 빼고 테스트 할 것)
 
📎
이 글은 Spring Batch 입문: 3시간 만에 끝내는 대용량 처리의 기초 강의의 수업 자료 중 일부입니다.