CronScheduleBuilder.cronSchedule()는 Java에서 Quartz Scheduler 라이브러리를 사용할 때 특정 시간 간격에 작업을 실행하도록 예약할 수 있게 해주는 강력한 도구입니다. 이 메서드는 Cron Expression을 사용하여 스케줄을 정의합니다. 이 포스팅에서는 Cron Expression의 형식, 각 필드의 의미, 작성 방법 및 예제에 대해 설명하겠습니다.
Cron Expression은 공백으로 구분된 6개의 필드로 구성됩니다.
초(Seconds) 분(Minutes) 시간(Hours) 일(Day of Month) 월(Month) 요일(Day of Week)
각 필드의 유효 범위는 다음과 같습니다.

초(Seconds)
범위: 0-59
0 : 정확히 0초에 실행
*/15 : 15초마다 실행
10,30,50 : 10초, 30초, 50초에 실행
분(Minutes)
범위: 0-59
0 : 작업이 매 시간 0분에 실행
*/15 : 15분마다 실행
10,30,50 : 10분, 30분, 50분에 실행
시간(Hours)
시간 필드는 작업이 실행될 특정 시간을 정의합니다.
범위: 0-23
0 : 자정에 실행
9-17 : 오전 9시부터 오후 5시까지 매시간 실행
*/4 : 4시간 간격으로 실행
일(Day of Month)
범위: 1-31
15 : 매월 15일에 실행
*/5 : 매 5일마다 실행
L : 해당 월의 마지막 날에 실행
W : 가장 가까운 평일(월-금)에 실행 (예: 15W는 15일이 주말이면 가장 가까운 평일로 이동)
월(Month)
범위: 1-12 또는 JAN-DEC
1 또는 JAN : 1월에 실행
6-8 : 6월부터 8월까지 실행
*/2: 매 두 달마다 실행됩니다.
요일(Day of Week)
범위: 1-7 또는 SUN-SAT
1 또는 SUN : 일요일에 실행
MON-FRI : 월요일부터 금요일까지 실행
5L : 해당 월의 마지막 금요일에 실행
2#1 : 매월 첫 번째 월요일에 실행
특수 문자

매일 자정에 실행
0 0 0 * * ?
매시간 15분마다 실행
0 15 * * * ?
매주 월요일 오전 9시에 실행
0 0 9 ? * MON
매월 마지막 날 오후 11시 30분에 실행
0 30 23 L * ?
주말 제외 매일 오전 8시부터 오후 6시까지 30분 간격으로 실행
0 0/30 8-18 ? * MON-FRI
복잡한 Cron Expression을 작성할 때, 테스트 도구를 사용하면 매우 유용합니다. 다음 도구를 추천합니다:
crontab.guru: 간단한 Cron 표현식을 확인할 수 있는 웹 도구.
Quartz Scheduler 공식 문서: Quartz Cron Expression의 상세한 가이드.
Cron Expression은 Quartz Scheduler에서 작업의 실행 주기를 세부적으로 제어할 수 있는 강력한 도구입니다. 이 문서를 참고하여 자신만의 Cron Expression을 작성하고, 효율적인 작업 스케줄링을 구현해보세요!