Spring
SpringBoot 스프링부트 @Scheduled 스케줄링 / 정해진 시각, 반복적으로 메서드 실행
JM_H
2023. 2. 19. 12:00

어떤 서비스를 만들었는데
이 서비스에는 날짜가 바뀌기 5분 전 매일 23시 55분에 고객들의 서비스 사용 데이터를 정리하고
정리한 내용을 서비스 회원들에게 메신저 or 메일을 통해 보내주는 기능을 만든다고 했을 때
@Scheduled 을 이용해서 간단하게 스케줄링을 구현할 수도 있다.
이 어노테이션을 사용하면 지정된 주기나 시간에 따라 메서드를 실행시킬 수 있다
우선 이 기능을 서비스에서 사용하기 위해서 @EnableScheduling 어노테이션을
스프링부트 애플리케이션에 붙여준다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@SpringBootApplication
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
그 다음에 스케줄링을 사용할 메서드에 @Scheduled 을 붙여준다.
이 어노테이션을 통해 메서드를 실행할 주기나 시간 등을 지정할 수 있음
import org.springframework.scheduling.annotation.Scheduled;
@Scheduled(cron = "0 55 23 * * *") // 매일 오후 11시 55분에 실행
public void sendOrganizedData() {
// 데이터를 정리하고 메신저나 메일로 발송하는 기능을 동작하는 코드 or 메서드
}
cron = "지정할 시간 형식"은
초 (0-59) 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12 또는 JAN-DEC) 요일 (0-7 또는 SUN-SAT, 0과 7은 SUN과 같음)
원하는 시간을 설정하여 세팅하면 되고
cron = "0/30 * * * *" => 30초 마다
cron = "0 10,40 * * *" => 매 시간 10분,40분 마다
cron = "0 0/15 9-18 * MON-FRI" =>. 월~금 (토,일 제외) 오전 9시 부터 오후 6시 사이 15분 마다
등등 위와 같이 여러가지 형식대로 설정이 가능함