티스토리 뷰

Spring Boot Scheduler Cron(크론)

 

스프링부트에서 특정 시간마다 반복되게 하고 싶다면 Cron(크론)을 사용합니다.

 

크론은 다음과 같이

* * * * * *

총 6자리로 이루어져 있습니다.

 

각 자리는 초, 분, 시, 일, 월, 요일 입니다.

  • "0 0 * * * *" = the top of every hour of every day.
  • "* * * * * *" = 매초 실행 합니다.
  • "*/10 * * * * *" = 매 10초마다 실행한다.
  • 0 */1 * * * = 매시간 실행 합니다.
  • "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

SnapShotScheduler.java

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class SnapShotScheduler { 
    @Scheduled(cron = "*/10 * * * * *") 
    public void run() { 
    	log.info("hello2----"); 
    } 
}

위 코드는 다른 자리는 모두 *이고 초, 분, 시, 일, 월, 요일 중 맨 앞에만 10이기 때문에 매분 10초에 실행합니다. 그러니까 1분마다 실행되는 것입니다.

Server.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
 
@SpringBootApplication
@EnableScheduling
public class Server extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Server.class, args);
    }
}

스프링부트에서 사용하려면 위와 같이 @EnableScheduling을 붙여주어야 하고

@Scheduled를 정기적으로 실행하고 싶은 메소드에 붙여 놓으면 됩니다.

예를 들어 위와 같이 "10 * * * * *" 이렇게 해놓으면 매 10초에 실행되니까 1분마다 실행이 됩니다.

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함