HongCat 개발 스토리

8. Cron 표현식과 Scheduled 예제 본문

FrameWork

8. Cron 표현식과 Scheduled 예제

홍캣 2019. 12. 13. 17:30

2019.12.13

문자열의 좌측부터 우측까지 순서대로 의미가 있고 각 문자는 space문자로 구분

10 * * * * *(*) 

 

https://zamezzz.tistory.com/197-->블로그를 참조

필드 값의 허용 범위 사용가능 값
초 (Seconds) 0 ~ 59 , - * /
분 (Minutes) 0 ~ 59 , - * /
시 (Hours) 0 ~ 23 , - * /
일 (Day) 1 ~ 31 , - * ? / L W
월 (Month) 1 ~ 12 or JAN ~ DEC , - * /
요일 (Week) 1 ~ 7 or SUN ~ SAT , - * ? / L #
연도 (Year)
empty or 1970 ~ 2099

, - * /

 Cron 표현식 - 특수문자

 

  •  * : 모든 값을 뜻합니다.
  •  ? : 특정한 값이 없음을 뜻합니다. 
  • - : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현
  •  , : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI 
  •  / : 시작시간 / 단위  (예) 0분부터 매 5분 0/5
  •  L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)
  •  W : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음
  •  # : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일
Cron 표현식  의미
10 * * * * * 매일 매시간 매분 10초마다 실행
0 0 12 * * * 매일 12시에 실행
0 15 12 * * * 매일 12시 15분에 실행
0 * 14 * * * 매일 14시에 0분 ~ 59분까지 매분 실행 
0 0/5 12 * * * 매일 14시에 시작해서 5분간격으로 실행
10/5 * 14 * * * 매일 14시 0~59분까지 매분 10초부터 5초 간격으로 실행
0 0-5 14 * * * 매일 14시 0분,1분,2분,3분,4분,5분에 실행
0 0-5 14,18 * * * 매일 14시 18시 0분,1분,2분,3분,4분,5분에 실행
0 45 7 ? * MON-FRI 월~금요일 7시 45분마다 실행
0 15 10 ? * 6L 매월 마지막 금요일 10시 15분 

Cron을 사용한 예제 실습

1. applicationContext.xml ->Namespace 클릭-> tx를 체크한다.

2. 아래 표시된 코드를 추가해준다. 

applicationContext.xml  추가된 소스코드

<!-- 스케줄링 Annotation -->
	<tx:annotation-driven/>

3. ScheduledTest.java 클래스 생성

4. ScheduledTest.java 소스코드

package org.kh.member.common;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTest {
	@Scheduled(fixedDelay=5000)
	public void scheduledTest() { //매개변수가 존재하면 안됨. 자동실행이므로 값을 넘겨줄 방법이 없음 (에러발생!)
		System.out.println("스케쥴링에 의한 자동 출력문구(5초마다 출력)");
	}
	@Scheduled(cron="10 * * * * *")
	public void scheduledTest2() {//매일 매시간 매분 10초마다 출력 
		System.out.println("크론탭을 이용한 자동 출력");
	}
}

*스케줄링을 사용할 때 메소드에 매개변수가 존재하면 안된다! 자동으로 실행되는 메소드 이므로 매개변수 값을 넣어주게 되면 오류발생

 

5. 스케줄링 결과화면

 

Comments