반응형

스프링 프로젝트를 진행하면서 주기적으로 특정 업무를 실행해야 할 때 사용하는 것이 스케쥴러다. 여기서 배치(Batch)와 스케쥴러(Scheduler)는 의미가 완전히 다르므로 구분을 해야 한다. 이번 글은 스프링(Spring)에서 스케쥴러를 사용할 때 Cron 표현식을 사용하는데 이 Cron 표현식에 대해 글을 기록한다.


우리가 소스를 보다 보면, 아래와 같은 것을 볼 수 있다.

@Scheduled(cron="0 0 0/1 ** ?")
public void test() {

}

 

위의 소스를 보면 Scheduled라는 @애노테이션을 볼 수 있는데, 그 안에는 cron이라고 하여 어떤 정규 표현식처럼 보이는 숫자들과 기호가 적혀져 있다. 이 숫자와 기호가 의미하는 것이 무엇인지는 아래에서 확인할 수 있다.

 

CRON 규칙

스프링 프레임워크(Spring Framework)에서의 CRON은 총 7자리를 사용하는데, CRON 표현식 규칙은 아래와 같다.

 

CRON 규칙은 총 7자리를 사용하는데, 왼쪽에서부터 초, 분, 시간, 일, 월, 주, 년도를 사용한다.

시간 년도
0 ~ 59 0 ~ 59 0 ~ 23 1 ~ 31 1 ~ 12
JAN ~ DEC
0 ~ 6
SUN ~ SAT
1970 ~ 2099
생략가능

 

CRON 표현식 특수문자

CRON 표현식에서 특수문자는 정규 표현식과 비슷하기도 한데, 의미가 다른 것도 있다.

* 모든 값을 의미
? 어떤 값이든 상관 없음
- 범위값 지정
, 여러 값 지정
/ 증분값 지정 EX) 매 2시간 마다 0/2
L 지정할 수 있는 범위 마지막 값
W 가장 가까운 평일 설정
# N번 째 특정 요일

 

CRON 표현식 예제

매 1초마다 @Scheduled(cron="0/1 * * * * * *")
매 1분마다 @Scheduled(cron="0 0/1 * * * * *")
5분에 시작해서 매 10분마다 @Scheduled(cron="0 5/10 * * * * *")
매 1시간마다 @Scheduled(cron="0 0 0/1 * * * *")
오전 9시부터 6시까지 매 10분마다 @Scheduled(cron="0 0/10 9-16 * * * *")
오전 9시, 오전 6시에만 매 10분마다 @Scheduled(cron="0 0/10 9,16 * * * *")
매달 마지막 날 23시마다 @Scheduled(cron="0 0 23 L * * *")
매월 1일 새벽 3시 @Scheduled(cron="0 0 3 1 * ?")
매일 새벽 1시 @Scheduled(cron="0 0 1 * * ?")
매일 새벽 2시 @Scheduled(cron="0 0 2 * * ?")

참고

https://wooncloud.tistory.com/75#cronExpr

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기