Computer Science

@Scheduled 와 함께 Cron식 사용하기

@Scheduled 어노테이션

@Component
@Slf4j
public class Scheduler {
    @Scheduled(//<--여기에 들어갈 것을 알아보자-->//) 
    public void fixedRateTest() {
          log.info(">>>>> Schedule");
    }

 

@Scheduled 어노테이션과 함께 사용할 수 있는 인자들은 다음과 같다.

fixedRate = 2000 // 수행 시작 기점, 2초 후 실행
fixedDelay = 2000 // 수행 종료 기점, 7초 후 실행
cron = "0 0 10 * * *" // 매일 오전 10시 실행

 

여기서, Cron 표현식에 대해 더 알아보자면,

 

Cron 표현식

@Scheduled(cron = "0 0 10 * * *") // 매일 10시 실행
@Scheduled(cron = "0 10 10 * * *") // 매일 10시 10분 실행
@Scheduled(cron = "0 * 10 * * *") // 매일 10시에 0분~59분까지 매분 실행
@Scheduled(cron = "0 0/5 10 * * *") // 매일 10시에 시작해서 5분 간격으로 실행
@Scheduled(cron = "0 0/5 10,12 * * *") // 매일 10시, 12시에 시작해서 5분 간격으로 실행 
@Scheduled(cron = "0 0-5 10 * * *") // 매일 10시에 0분, 1분, 2분, 3분, 4분, 5분에 실행
@Scheduled(cron = "0 0 10 ? * MON-FRI") // 월~금일 10시 0분 0초에 실행
@Scheduled(cron = "0 0/5 10 * * ?") // 아무요일, 매월, 매일 10:00부터 14:05분까지 매분 0초 실행 (6번 실행됨)
@Scheduled(cron = "0 00 10 ? * 6L") // 매월 마지막 금요일 아무날이나 10:00:00에 실행
@Scheduled(cron = "0 00 10 1 * ?") // 아무요일, 매월 1일 10:00:00에 실행
@Scheduled(cron = "* /1 * * * *") // 매 1분마다 실행

특수문자 

기호 의미
* 모든 수
? 사용 안함
- 기간 설정
, 특정 시각
\ 반복
L 마지막 기간
W 가장 가까운 평일에 수행
LW L과 W의 조합
# 몇째 주와 요일 설정

표현식 순서 의미

초 분 시 일 월 주 년