본문 바로가기
Spring

[Spring; 스프링] Scheduler Cron ( 크론 / 스케줄러 )

by daddydontsleep 2023. 10. 20.
728x90
728x90

Spring Logo

SpringBoot Scheduler Cron

스프링 스케줄 설정

@EnableScheduling
@SpringBootApplication
public class Application {
	
    @Scheduled(cron = "10 * * * * *")
    public void run() {
    	// 10초마다 실행
        System.out.println("안녕하세요! " + LocalDateTime.now().toString());
    }
}

@EnableScheduling 어노테이션을 설정합니다.

그리고 시간을 지정할 메소드 위에

@Scheduled(cron = "10 * * * * *")

시간을 지정해줍니다.

크론의 표현식은 여섯자리로 이루어져있습니다.

# ┌───────────── second (0-59)
# │ ┌───────────── minute (0–59)
# │ │ ┌───────────── hour (0–23)
# │ │ │ ┌───────────── day of the month (1–31)
# │ │ │ │ ┌───────────── month (1–12)
# │ │ │ │ │ ┌──────────── day of the week (0–6) (Sunday to Saturday; 7 is also Sunday on some systems)
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * * <command to execute>

* * * * * *

첫 번째 - 초 (0-59)

두 번째 - 분 (0-59)

세 번째 - 시 (0-23)

네 번째 - 일 (1-31)

다섯번째 - 월 (1-12)

여섯번째 - 요일 (0-7) 0과 7은 일요일, 1부터 월요일로 시작해서 6은 토요일로 끝남

* - 모든조건(ALL)을 뜻함

? - 어떤값이든 상관없음(일,월, 요일에서만 사용 가능)

-(하이픈) - 범위를 지정할때 사용

,(콤마; 쉼표) - 여러값을 지정할때 사용

/(슬래시; 빗금) - 초기값과 증가치를 지정할때 사용

L(라스트; 마지막) - 마지막 값: 지정할 수 있는 범위의 마지막 값(일, 월, 요일에서만 사용 가능)

#(해쉬; 샵) - 요일 필드에서만 '#'이 허용됨, 뒤에는 1~5 사이의 숫자가 와야함 특정 달의 "두 번째 금요일"과 같은 구문을 지정할 수 있음

예를 들면 요일 필드에 "5#3"을 입력하면 매월 세 번째 금요일에 해당함

W - 가장 가까운 평일을 찾음(일에서만 사용 가능)

18W

* 18일이 평일이면 18일에 실행

* 18일이 토요일이면 가장 가까운 평일인 17일(금요일)에 실행

* 18일이 일요일이면 가장 가까운 평일인 19일(월요일)에 실행

 

<reference>

https://en.wikipedia.org/wiki/Cron#CRON_expression

https://itworldyo.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%8A%A4%EC%BC%80%EC%A4%84-%EC%84%A4%EC%A0%95-%EB%B2%95-Cron-%EC%A3%BC%EA%B8%B0%EC%84%A4%EC%A0%95

728x90
300x250