크론 표현식은 배치작업 소스를 만들 때 마다 찾아 본다 ㅋㅋㅋㅋ 볼 때마다 낯설다..
매주 금요일 오후 3시 30분에 발송하는 배치 소스를 @Scheduled 어노테이션을 이용해서 개발 중인데, 개발 중에 발견한 사항들을 적어본다.
- 0~6, SUN~SAT 요일 숫자 매칭
- W, L의 단일 스트링 사용 오류
1. 0~6, SUN~SAT 요일 숫자 매칭
거의 대부분의 문서에서 요일과 관련하여 0~6, SUN~SAT
이라고 되어있는데 그래서 이 두개가 같다는 건지
0 1 2 3 4 5 6 인데
일 월 화 수 목 금 토 인건지
그렇다면 왜 많은 문서들이 금요일을 6이라고 표현하고 있는건지
넘나 헷갈려서 테스트를 해봤다.
오늘은 🔥금요일🔥이고, IBM 사이트에서 복붙해온 금요일 크론 표현식을 사용했는데 함수 실행 안됨.
@Scheduled(cron = "0 26 16 ? * 6") //실패
public void excute() {
System.out.println("today is Friday");
}
출처 : https://www.ibm.com/docs/ko/urbancode-release/6.1.0?topic=interval-cron-expressions-defining-frequency
그래서 6이아닌 5를 넣고 돌렸더니 함수 실행됨.
@Scheduled(cron = "0 26 16 ? * 5") //성공
public void excute() {
System.out.println("today is Friday");
}
결론은 이거같다.
0,7 1 2 3 4 5 6
일 월 화 수 목 금 토
2. W, L의 단일 스트링 사용 오류
이전에 배치 개발 했을 때 발견했던 건데, 지금 쓴다.
매월 마지막 금요일 오전 10:15 ==> "0 15 10 ? * 6L" 라고 나와있는데, 내 개발 환경에서는 작동하지 않는다.
아직 이유는 못찾았다. 단순히 3.x 버전의 스프링에서는 단일 스트링 사용한 크론표현식 개발이 되지 않는다고만 인지하고 있을 뿐이다.
@Scheduled(cron = "0 45 16 ? * 6L") //실패
public void excute() {
System.out.println("today is Friday");
}
근데 그러면 MON, FRI 같은 요일 스트링도 입력되지 않아야 하는거 아냐..?
얘네는 왜 되는거람,, 진짜 모르겠다 ㅋㅋㅋㅋㅋㅋㅋㅋ
나중에 알게되면 이 글을 수정하러 와야겠다.
추가로, 크론표현식에 사용되는 요일, 시간은 어느 나라를 기준으로 하는 건지 궁금하다.
혹시 아시는 선배님들이 이 글을 보신다면 정보 좀 주세요... :)
'웹개발지식쌓기' 카테고리의 다른 글
[back] 초간단 Interceptor 사용법 (0) | 2022.08.16 |
---|---|
[front] 페이스북 글 공유하기 포스팅 api (0) | 2022.08.03 |
[오류] 메이븐 오류 - java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet (0) | 2022.06.16 |
[back] catalina.out 한글 깨질 때 (0) | 2022.06.09 |
[back] Gson과 JSONArray, 같은 데이터 다른 JSON 구조 (0) | 2022.06.02 |