[Spring boot]스케줄러(scheduler)
[Spring boot]스케줄러(scheduler)
정해진 시간에 주기적으로 반복적인 일을 수행하는 경우가 많습니다.
@Scheduled 어노테이션으로 몇 가지의 설정을 통해 반복 작업을 실행할 수 있습니다.
1. Application 상단에 @EnableScheduling 추가
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class WebApplication {}
2. 선언
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
- 호출 후 10초 후 재 호출. 호출 된 프로세스가 다 완료되고 5초 대기 후 또 다시 호출.
@Scheduled(fixedDelay = 10000)
public void fixedDelay() {
System.out.println(new Date());
}
- 호출 후 프로세스와 상관없이 10초 마다 호출.
@Scheduled(fixedRate = 10000)
public void fixedRate() {
System.out.println(new Date());
}
- 호출하고 2초 대기 후에 실행, 이후 프로세스와 상관없이 7초마다 호출.
@Scheduled(fixedRate = 7000, initialDelay = 2000)
public void fixedRateWithInitialDelay(){
System.out.println(new Date());
}
// "0 0 * * * *" = the top of every hour of every day.
// "*/10 * * * * *" = 매 10초마다 실행한다.
// "0 0 8-10 * * *" = 매일 8, 9, 10시에 실행한다
// "0 0 6,19 * * *" = 매일 오전 6시, 오후 7시에 실행한다.
// "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day.
// "0 0 9-17 * * MON-FRI" = 오전 9시부터 오후 5시까지 주중(월~금)에 실행한다.
// "0 0 0 25 12 ?" = every Christmas Day at midnight
@Scheduled(cron = "0 0 0-6 * * *")
public void cron(){
System.out.println(new Date());
}