1. 컨피그 파일 생성 및 어노테이션 추가
package com.solution.framework.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
*
* @author ljo
*
*/
@Configuration
@EnableScheduling
public class SchedulingConfig {
}
2. 설정
package com.solution.framework.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskRejectedException;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
/**
*
* @author ljo
*
*/
@Configuration
@EnableScheduling
public class SchedulingConfig {
protected final Logger logger = LoggerFactory.getLogger(getClass());
/**
* 리포트 매시간 5분에 실행
* @throws Exception
*/
@Scheduled(cron="0 5 * * * ?")
public void report(){
try {
//코드
}catch(TaskRejectedException e){
logger.info("Report Thread ING~~~!!");
}catch(Exception e){
logger.info("Report Exception~~~!!");
}
}
}
3. 속성 정리
왼쪽부터 초 분 시간 일(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 => 첫 번째 월요일
속성
cron : cron표현식
fixedDelay : milliseconds 단위로, 이전 작업이 끝난 시점으로 부터 고정된 시간을 설정
fixedRate : milliseconds 단위로, 이전 작업이 수행되기 시작한 시점으로 부터 고정된 시간을 설정
initialDelay : 초기 지연시간 설정
zone : cron표현식을 사용했을 때 사용할 time zone
cron 표현식 예제)
@Scheduled(cron="20 0/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분에 실행
속성 예제)
최초 딜레이 30초 이후 5분마다 실행
@Scheduled(fixedRate = (1000 * 60 * 5), initialDelay = (1000 * 30))
광고 : https://play.google.com/store/apps/details?id=com.ljo.blocktube
'개발 > java&kotlin' 카테고리의 다른 글
spring cloud openfeign 사용하기 (0) | 2020.11.24 |
---|---|
Spring boot - logback 로그처리 (0) | 2020.03.27 |
java 로 캡챠 구현 (0) | 2020.03.26 |
WebBindingInitializer 활용 (0) | 2018.07.12 |
spring 크로스 도메인 처리 (0) | 2018.07.12 |