twocowsong

@Scheduled 본문

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

 

 

'IT > SpringBoot' 카테고리의 다른 글

Environment  (0) 2022.02.02
@RestController @Controller  (0) 2022.01.24
Redirect, forward, RedirectAttributes  (0) 2022.01.23
@ModelAttribute, @PathVariable, @RequestBody  (0) 2022.01.18
@Data  (0) 2022.01.18