본문 바로가기
프로그래밍/스프링(spring)

스프링부트 스케줄 설정 법 & Cron 주기설정

by imfireguy 2021. 2. 20.
반응형

 

스프링 스케줄 설정 법 
 
@SpringBootApplication
@EnableScheduling
public class Scheduler {
 
    @Scheduled(cron = "10 * * * * *")
    public void run() {
        // TODO
        System.out.println("현재 시간은 " + new Date());
    }
    
}
cs

클래스 위에 @EnableScheduling 어노테이션을 설정 해 줍니다.

 

그리고 실제 사용할 자바 매소드 위에 

 

예시)

@Scheduled(cron = "10 * * * * *")

 

이런식으로 설정해 줍니다.

 

결과: 이렇게 아래처럼 매분 10초마다 스케줄러 도는것을 볼 수 있습니다.

 

 

CRON 표현식 

스케줄러의 경우 매소드위에 @Scheduled(cron = "10 * * * * *") 이런식으로 어노테이션을 작성해 줍니다.

그럼 CRON 표현식을 살펴 보겠습니다.

 

* : 모든조건(ALL)을 의미 합니다.

 

? : 설정 값 없을 때(어떠한 값이든 상관없습니다.) 다만 날짜와 요일에서만 사용가능 합니다.

 

-(하이픈) : 범위값을 지정할 때 사용 합니다.

 

,(콤마) : 여러값을 지정할 때 사용 합니다.

 

/(슬러시) : 초기값과 증가치를 설정할 때 사용 합니다.

 

L : 마지막 - 지정할 수 있는 범위의 마지막 값 설정할때 사용 가능 합니다. 그리고 날짜와 요일에서만 사용 가능 합니다.

W : 가장 가까운 평일 찾는다 - 일 에서만 사용가능

예) 10W

-10일이 평일 일 때 : 10일에 실행

-10일이 토요일 일 때 : 가장 가까운 평일인 금요일(9일)에 참

-10일이 일요일 일 때 : 가장 가까운 평일인 월요일(11일)에 참

# : 몇주 째인지 찾는다 - 요일 에서만 사용가능 합니다.

ex) 3#2 : 수요일#2째주 에 참

예제)

1) 매월 10일 오전 11시

cron = "0  1  1  10  *  *"

2) 매일 오후 2시 5분 0초

cron = "0  5  14  *  *  *"

3) 10분마다 도는 스케줄러 : 10분 0초, 20분 0초...

cron = "0  0/10  *  *  *"

4) 조건에서만 실행되는 스케줄러 : 10분 0초, 11분 0초 ~ 15분 0초까지 실행

cron = "0  10-15  *  *  *"

 

5)  5분 마다 실행 예) 00:05, 00:10. 00:15 

cron = "0 0/5 * * * *"

6) 1시간 마다 실행 예) 01:00, 02:00, 03:00

cron = "0 0 0/1 * * *"

7) 매일 오후 18시마다 실행 예) 18:00

cron = "0 0 18 * * *"

8) 2018년도만 매일 오후 18시마다 실행 합니다. 예) 18:00

cron = "0 0 18 * * * 2018"

9) 매일 오후 18시00분-18시55분 사이에 5분 간격으로 실행 ex) 18:00, 18:05.....18:55 

cron = "0 0/5 18 * * *"

10) 매일 오후 9시00분-9시55분, 18시00분-18시55분 사이에 5분 간격으로 실행 합니다.

cron = "0 0/5 9,18 * * *"

11) 매일 오후 9시00분-18시55분 사이에 5분 간격으로 실행 합니다.

cron = "0 0/5 9-18 * * *"

12) 매달 1일 00시에 실행 합니다.

cron = "0 0 0 1 * *"

13) 매년 3월내 월-금요일 10시 30분에만 실행 합니다.

cron = "0 30 10 ? 3 MON-FRI"

14) 매월 마지막날 저녁 10시에 실행 합니다.

cron = "0 0 10 L * ?"

 

 

반응형

댓글