본문 바로가기

프로그래밍/Spring & MyBatis

[Spring] 스케쥴러 (스프링 웹 크론)

@Configuration
@EnableScheduling
public class SchedulingConfig {
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    /**
      왼쪽부터 초 분 시간 일(Day of Month) 월 요일(Day of Week, 1-7 : SUN-SAT) 년도(생략가능)
      초 0-59 , - * /
      분 0-59 , - * /
      시 0-23 , - * /
      일 1-31 , - * ? / L W
      월 1-12 or JAN-DEC , - * /
      요일 1-7 or SUN-SAT , - * ? / L #
      년(옵션) 1970-2099 , - * /
      * : 모든 값
      ? : 특정 값 없음
      - : 범위 지정
      , : 여러 값 지정 구분에 사용
      / : 초기값과 증가치 설정에 사용
      L : 지정할 수 있는 범위의 마지막 값
      W : 월~금요일 또는 가장 가까운 월/금요일
      # : 몇 번째 무슨 요일 2#1 => 첫 번째 월요일
 
      예제)
      "0 0 12 * * ?"   매일 정오 12시에 실행
      "0 15 10 ? * *"   매일 오전 10시 15분에 실행
      "0 15 10 * * ?"   매일 오전 10시 15분에 실행
      "0 15 10 * * ? *"         매일 오전 10시 15분에 실행
      "0 15 10 * * ? 2005" 2005년 동안 매일 오전 10시 15분에 실행
      "0 * 14 * * ?"   매일 오후 2시부터 시작하여 오후 2시 59분까지 실행
      "0 0/5 14 * * ?"         매일 오후 2시부터 2시 55분까지 5분 간격으로 실행
      "0 0/5 14,18 * * ?" 매일 오후 2시부터 2시 55분까지, 오후 6시부터 6시 55분까지 5분 간격으로 실행
      "0 0-5 14 * * ?"         매일 오후 2시부터 2시 05분까지 분 단위로 실행
      "0 10,44 14 ? 3 WED" 3월의 매주 수요일 오후 2시 10분과 2시 44분에 실행
      "0 15 10 ? * MON-FRI" 매주 월요일부터 금요일까지 오전 10시 15분에 실행
      "0 15 10 15 * ?"         매달 15일 오전 10시 15분에 실행
      "0 15 10 L * ?"   매달 마지막 날 오전 10시 15분에 실행
      "0 15 10 ? * 6L"         매월 마지막 금요일 오전 10시 15분에 실행
      "0 15 10 ? * 6#3"         매월 세번째 금요일 오전 10시 15분에 실행
 
      @Scheduled(cron="5 * * * * *")이렇게 해도됨!!
      */
 
    /**
     * 최초딜레이 20초 이후 2분마다 실행
     */
    @Scheduled(fixedRate = (1000 * 60 * 1), initialDelay = (1000 * 20))
    public void shopData() {
 
    }
 
    /**
     * 매시간 5분에 실행
     * @throws Exception
     */
    @Scheduled(cron="0 5 * * * ?")
    public void report(){
 
    }
}

※ @Scheduled 매쏘드 아규먼트를 가질 수 없고 반환 타입은 void여야 한다.