IT/SpringBoot
@Scheduled
WsCode
2022. 1. 23. 19:07
특정 월, 일, 시간에 자동으로 실행되게 하고싶은 경우가 있습니다.
(예를들면 DB데이터를 월말 월초에 조회하여 엑셀파일로 만든는경우?)
스프링부트에서는 간편하게 Scheduled를 사용하여 만들수 있습니다.
Scheduled를 사용하기 위한 준비
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication이 존재하는 클래스에서 @EnableScheduling를 꼭 추가해주어야 실행이 가능합니다.
지정된 시간만큼 반복 하는 방법
@Slf4j
@Component
public class CheckVehicle {
@Scheduled(fixedDelay=5000)
public void checkTest() {
log.info("checkTest !!!!");
}
}
fixedDelay를 5000으로 설정하면 서버는 5초마다 checkTest를 찍게됩니다.
지정된 시간 후 지정된 시간만큼 반복하는 방법
@Scheduled(fixedDelay=5000, initialDelay = 3000)
public void checkTest() {
log.info("checkTest !!!!");
}
initialDelay를 3000(3초)로 설정하면 3초 후 5초마다 checkTest를 찍게됩니다.
특정 시간을 지정하는 방법
- 매요일 매월 매일 14시 30분 00초에 실행
@Scheduled(cron = "00 30 14 * * *")
public void checkTest() {
log.info("checkTest !!!!");
}
- (토-일) 1월 23일 18시 55분 00초에 실행
@Scheduled(cron = "00 55 18 23 JAN SAT-SUN")
public void checkTest() {
log.info("checkTest !!!!");
}
- 매요일 매월 마지막일 00시 00분 00초에 실행
@Scheduled(cron = "0 0 0 L * *")
public void checkTest() {
log.info("checkTest !!!!");
}
아래는 편하시게 사용하시라고 영어 정리하였습니다.
월 | 화 | 수 | 목 | 금 | 토 | 일 |
MON | TUE | WED | THU | FRI | SAT | SUN |
1월 | 2월 | 3월 | 4월 | 5월 | 6월 |
JAN | FEB | MAR | APR | MAY | JUN |
7월 | 8월 | 9월 | 10월 | 11월 | 12월 |
JUL | AUG | SEP | OCT | NOV | DEC |