Linux에서 cron 을 사용하는것 처럼 웹서비스에서도 정해진 시간에 무언가를 실행해야 하는 경우가 종종 있습니다.
자바에도 그런 기능을 제공해주고 있고,
Spring에서는 손쉽게 사용할 수가 있습니다.
일단 설정 소스는 아래와 같습니다.
<bean id="careerAlarmService" class="com.deepplin.sample.TestJob1" />
<task:scheduler id="gsScheduler" pool-size="10" />
<task:executor id="gsTaskExecutor" pool-size="10" />
<task:annotation-driven executor="gsTaskExecutor" scheduler="gsScheduler" />
com.deepplin.sample.TestJob1 이 클래스는 실행할 소스입니다.
그럼 소스를 한번 볼까요? 아래와 같습니다.
public class TestJob1{
@Scheduled(cron="*/30 * * * * *")
public void print(){
System.out.println("call : " +new Date());
}
}
한눈에 이해가 되지 않나요?
@Scheduled 어노테이션을 사용하면...해당 메소드를 실행할 수가 있습니다.
@Scheduled 어노테이션에 들어 가는 cron 설정은 linux 와 동일합니다..
설정은 아래 내용을 확인하시면 되겠네요..
/**********************************************************************
스케쥴링 할 메소드위에 @scheduled 어노테이션을 입력한 후에 시간설정하면 끝
시간 설정 @scheduled(cron=" ") * 리눅스 crontab 과 같은 설정방법
<예제>
@Scheduled(cron="0 0 05 * * ?") = 매일 5시에 실행
@Scheduled(cron="0 0 02 2,20 * ?") = 매월 2일,20일 새벽2시에 실행
***********************************************************************
--- cron 양식 ---
-초 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:00:00
"0 15 10 ? * *" : 모든 요일, 매월, 아무 날이나 10:15:00
"0 15 10 * * ?" : 아무 요일, 매월, 매일 10:15:00
"0 15 10 * * ? *" : 모든 연도, 아무 요일, 매월, 매일 10:15
"0 15 10 * * ? : 2005" 2005년 아무 요일이나 매월, 매일 10:15
"0 * 14 * * ?" : 아무 요일, 매월, 매일, 14시 매분 0초
"0 0/5 14 * * ?" : 아무 요일, 매월, 매일, 14시 매 5분마다 0초
"0 0/5 14,18 * * ?" : 아무 요일, 매월, 매일, 14시, 18시 매 5분마다 0초
"0 0-5 14 * * ?" : 아무 요일, 매월, 매일, 14:00 부터 매 14:05까지 매 분 0초
"0 10,44 14 ? 3 WED" : 3월의 매 주 수요일, 아무 날짜나 14:10:00, 14:44:00
"0 15 10 ? * MON-FRI" : 월~금, 매월, 아무 날이나 10:15:00
"0 15 10 15 * ?" : 아무 요일, 매월 15일 10:15:00
"0 15 10 L * ?" : 아무 요일, 매월 마지막 날 10:15:00
"0 15 10 ? * 6L" : 매월 마지막 금요일 아무 날이나 10:15:00
"0 15 10 ? * 6L 2002-2005" : 2002년부터 2005년까지 매월 마지막 금요일 아무 날이나 10:15:00
"0 15 10 ? * 6#3" : 매월 3번째 금요일 아무 날이나 10:15:00
리눅스의 Cron 예제
예) 40 3 * * * root /home/mysql/mysql_backup.sh
맨 앞의 40은 40분을 의미함 (분을 의미:0~59)
그 뒤의 3은 03시를 의미함 (시를 의미:0~23)
그 뒤의 * 은 매일을 의미함 (일을 의미:1~31)
그 뒤의 * 은 매월을 의미함 (월을 의미:1~12)
그 뒤의 * 은 매주를 의미함(요일을 의미 1:월요일~7:일용일)
그 뒤의 root /home/mysql/mysql_backup.sh 는 root 계정으로 mysql_backup.sh을 실행하라는 의미
문자 : 각 필드에 해당하는 모든 숫자를 의미
문자 : 각 필드자리에 하이픈 문자가 올수 있음
ex) 일 필드자리에 11-15 (11,12,13,14,15일을 의미)
문자 : 각 필드자리에 콤마문자가 올수 있음
ex) 일 필드자리에 1,11,21 (1일,11일 21일을 의미)
1/2000 초 설정법
@Scheduled(fixedDelay=2000)
*/
Spring boot 구조 (스프링 부트) (0) | 2018.09.12 |
---|---|
[Spring] STS Maven 2.5.1 Install 컴파일 에러 (tools.jar) 출처: http://pnot.tistory.com/6 [프로그래밍 노트] (0) | 2018.03.07 |
스프링(Spring) 게시판 소스 예제 (페이징, 댓글, 대댓글, 목록 조회, 글쓰기, 상세보기, oracle, mysql) (149) | 2017.08.10 |
org.apache.ibatis.type.TypeException: Could not set parameters for mapping (0) | 2017.03.23 |
Spring excel download xlsx (엑셀 2007 이후버전) (15) | 2017.01.19 |
댓글 영역