반응형
스프링 프로젝트를 진행하면서 주기적으로 특정 업무를 실행해야 할 때 사용하는 것이 스케쥴러다. 여기서 배치(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 * * ?") |
참고
반응형
최근댓글