본문으로 바로가기

Spring Boot Scheduler Cron(크론)


스프링부트에서 특정 시간마다 반복되게 할려면 크론이라는걸 사용한다.


크론은 다음과 같이


* * * * * *

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


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


  • "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


SnapShotScheduler.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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----");
    }
 
}
 
cs

매분 10초에 실행한다. 그러니까 1분마다 실행되는 것이다.

Server.java
1
2
3
4
5
6
7
8
9
10
11
12
13
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);
    }
}
 
cs


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


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


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




 end.




댓글을 달아 주세요