98DAY / 스프링 스케쥴러 CRON식
2017. 8. 23. 08:49
스프링 스케쥴러 https://spring.io/guides/gs/scheduling-tasks/
CRON 크론 표현식
초 | 분 | 시 | 일 | 월 | 요일 | 연도
0~59 | 0~59 | 0~23 | 1~31 | 1~12 | 0~6 | 생략가능
요일 : 0 (일요일) ~ 6( 토요일)
? : 설정 값 없을 때 - 일과 요일 에서만 사용가능
* : 모든조건
시작시간/단위 : 시작시간부터 해당 단위 때
시작범위-끝범위 : 시작범위 부터 끝범위까지
L : 마지막 - 일, 요일 에서만 사용가능
W : 가장 가까운 평일 찾는다 - 일 에서만 사용가능
ex) 10W
-10일이 평일 일 때 : 10일에 실행
-10일이 토요일 일 때 : 가장 가까운 평일인 금요일(9일)에 참
-10일이 일요일 일 때 : 가장 가까운 평일인 월요일(11일)에 참
# : 몇주 째인지 찾는다 - 요일 에서만 사용가능
ex) 3#2 : 수요일#2째주 에 참
예제
1) 매월 10일 오전 11시
0 1 1 10 * *
2) 매일 오후 2시 5분 0초
0 5 14 * * *
3) 10분마다 도는 스케줄러 : 10분 0초, 20분 0초...
0 0/10 * * *
4) 조건에서만 실행되는 스케줄러 : 10분 0초, 11분 0초 ~ 15분 0초까지 실행
0 10-15 * * *
스프링 스케줄러 사용하기
servlet-context.xml 환경설정
1. beans태그에 task 속성 추가
1 2 | xmlns:task="http://www.springframework.org/schema/task | cs |
2. xsi:schemaLocation 내에 코드 추가
1 2 | http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd | cs |
3. beans 태그의 자식태그 추가
1 2 3 | <context:component-scan base-package="com.ksmart.harulook.scheduler" /> <task:scheduler id="jobScheduler" pool-size="10" /> <task:annotation-driven scheduler="jobScheduler" /> | cs |
스케줄러 job생성
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 31 | package com.ksmart.harulook.scheduler; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.ksmart.harulook.hof.service.HofDao; @Component public class Scheduler { Logger log = Logger.getLogger(this.getClass()); @Autowired private HofDao hofdao; /*매월 1일 0시 30분 명예의전당 입력*/ @Scheduled(cron="0 30 0 1 * *") public void HofScheduler() { try{ hofdao.insertHof(); }catch(Exception e){ e.printStackTrace(); } } } | cs |