본문 바로가기

1. Annotation 사용예시

@Service
public class TaskTestService {


    @Scheduled(fixedDelay=1000)
    public void TestScheduler(){
        System.out.println("스케줄링 테스트");
    }
}

위와 같이 @Scheduled 어노테이션을 이용하여 간단하게 스케쥴에 따른 작업을 처리할 수 있게 된다.

@Scheduled 의 value 같은 3가지(cron, fixedDelay, fixedRate) 종류가 있다.

 

cron은 CronTab에서의 설정과 같이 cron="0/10 * * * * ?" 과 같은 설정이 가능하고

fixedDelay은 이전에 실행된 Task의 종료시간으로 부터 정의된 시간만큼 지난 후 Task를 실행한다.(밀리세컨드 단위)

fixedRate은 이전에 실행된 Task의 시작시간으로 부터 정의된 시간만큼 지난 후 Task를 실행한다.(밀리세컨드 단위)

 

 

2. Cron Expression

왼쪽부터 오른쪽순으로 다음과 같은 의미가 있다.

 Seconds   0 ~ 59
 Minutes  0 ~ 59
 Hours  0 ~ 23  
 Day of Month  1 ~ 31
 Month  1 ~ 12 
 Day of Week  1 ~ 7 (1 => 일요일, 7=> 토요일 / MON,SUN...) 
 Years(optional)  1970 ~ 2099 


사용 특수문자의 사용은 아래와 같은 의미가 있다.

 *  모든수를 의미, Minutes 위치에 사용될 경우 매분마다 라는 뜻 
 ?  Day of Month, Day of Week에만 사용 가능, 특별한 값이 없다는 뜻 
 -  기간을 설정, Hour 위치에 10 - 12 라고 쓰면 10, 11, 12dp 동작하라는 뜻 
 ,  특정 시간을 설정. Day of Week 위치에 2, 4, 6 이라고 쓰면 월, 수, 금에만 동작하라는 뜻 
 /  증가를 표현, Seconds 위치에 0/15로 설정되어 있으면, 0초에 시작해서 15초 간격으로 동작
 하라는 뜻 
 L  Day Of Month 에서만 사용하며, 마지막 날의 의미 Day of Month 에 L로 설정되어 있으면 그달
 의 마지막날에 실행하라는 의미 
 W  Day of Month 에만 사용하며, 가장 가까운 평일을 의미. 15W로 설정되어 있고 15일이 토요일
 이며, 가장 가까운 평일인 14일 금요일에 실행, 15일이 일요일이면 16일 월요일에 실행된다.
 15일이 평일이면 그날 그대로 실행됨 
 LW  L과 W를 결합하여 사용, 그달의 마지막 평일의 의미 
 #  Day of Week에 사용, 6#3 의 경우 3번째 주 금요일에 실행된다. 


 

사용 예

0 0 12 * * *           ==> 매일 12시에 실행

0 15 10 * * *         ==> 매일 10시 15분에 실행

0 * 14 * * *           ==> 매일 14시에 실행

0 0/5 14 18 * * *    ==> 매일 14시, 18시에 시작해서 5분간격으로 실행

0 0-5 14 * * *        ==> 매일 14시에 시작해서 0분동안 실행 

엉망진창

개인 블로그 입니다. 코딩, 맛집, 정부정책, 서비스, ~방법 등 다양한 정보를 소개합니다