HD

Java @Scheduled Cron 표현식 본문

JAVA

Java @Scheduled Cron 표현식

hunecenter 2022. 10. 4. 14:40
반응형

매번 프로젝트 스케쥴 걸때마다 찾아다녀서 기억 할겸 기록!!

 

Cron 표현식의 각 시간단위는 아래의 범위로 구성 (Cron 표현식 6~7자리)

요일 년도
0 ~ 59 0 ~ 59 0 ~ 23 1 ~ 31 1 ~ 12 0 ~ 6 *생략가능*

@scheduled 옵션

옵션 내용
fixedDelay 이전 작업이 종료된 후 설정 시간만큼 기다린 후에 시작한다. (밀리세컨드)
@Scheduled(fixedDelay = 1000)
fixedRate 이전 작업이 종료되지 않아도 설정된 시간마다 시작한다. (밀리세컨드)
@Scheduled(fixedRate = 1000)
initialDelay 작업 시작 시, 설정된 시간만큼 기다린 후 시작한다. (밀리세컨드)
@Scheduled(fixedRate = 1000, initialDelay = 2000)
cron 원하는 시간대를 설정하여 작업을 실행한다.
@Scheduled(cron = "* * * * * *") 
(초(0-59), 분(0-59), 시간(0-23), 일(1-31), 월(1-12), 요일(1-7, 1:일, 7:토))

zone 시간대를 설정 한다. 미설정 시 로컬 시간대가 적용된다.
@Scheduled(cron = "* * * * * *", zone = "Asia/Seoul") 

Cron 표현식 특수문자

  • * : 모든 값(매시, 매일, 매주처럼 사용한다.)
  • ? : 특정 값이 아닌 어떤 값이든 상관 없음
  • - : 범위를 지정할 때
  • , : 여러 값을 지정할 때
  • / : 증분값, 즉 초기값과 증가치를 설정할 때
  • L : 지정할 수 있는 범위의 마지막 값 표시
  • W : 가장 가까운 평일(weekday)을 설정할 때
  • # : N번 째 특정 요일을 설정할 때

Cron 표현식 예시

//매 10분마다
@Scheduled( cron = "0 0/10 * * * *")

//매 3시간마다
@Scheduled( cron = "0 0 0/3 * * *")

//2018년도 매일 14시 30분마다
@Scheduled( cron = "0 30 14 * * * 2018")

//매일 10시 ~ 19시 사이에 10분 간격으로
@Scheduled( cron = "0 0/10 10-19 * * *")

//매일 10시와 19시에만 10분 간격으로
@Scheduled( cron = "0 0/10 10,19 * * *")

//매달 25일 01시 30분에
@Scheduled( cron = "0 30 1 25 * *")

//매주 월, 금요일 10시와 19시 사이 10분마다
@Scheduled( cron = "0 10 10-19 ? * MON,FRI")

//매달 마지막날 15시 30분
@Scheduled( cron = "0 30 15 L * *")

//2021~2022년 매월의 마지막 토요일 오후 1시 20분
@Scheduled( cron = "0 20 13 ? * 6L 2021-2022")

//매 10분마다
@Scheduled( cron = "0 0/10 * * * *")

//매 3시간마다
@Scheduled( cron = "0 0 0/3 * * *")

//2022년도 매일 14시 30분마다
@Scheduled( cron = "0 30 14 * * * 2022")

//매일 10시 ~ 19시 사이에 10분 간격으로
@Scheduled( cron = "0 0/10 10-19 * * *")

//매일 10시와 19시에만 10분 간격으로
@Scheduled( cron = "0 0/10 10,19 * * *")

//매달 25일 01시 30분에
@Scheduled( cron = "0 30 1 25 * *")

//매주 월, 금요일 10시와 19시 사이 10분마다
@Scheduled( cron = "0 10 10-19 ? * MON,FRI")

//매달 마지막날 15시 30분
@Scheduled( cron = "0 30 15 L * *")

//2021~2022년 매월의 마지막 토요일 오후 1시 20분
@Scheduled( cron = "0 20 13 ? * 6L 2021-2022")

JAVA 사용 예시

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

/**
 * @Class Name  : SchdulService.java
 * @Description :  
 * @Modification Information
 *
 *    수정일              수정자         수정내용
 *    -------  -------  -------------------
 *    2022. 10. 4.	HD    	최초생성
 *
 * @author HD
 * @since 2022. 10. 4.
 * @version 1.0
 * @see
 */
@Component
public class SchdulService {
 
	@Scheduled( cron = "0 */1 * * * ?" ) //1분에 한번(테스트용)
	public void startSchdulService(){
		System.out.println("1분마다 스케쥴 실행");
	}
}

참고링크

 

https://en.wikipedia.org/wiki/Cron#CRON_expression

 

cron - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Job scheduler for Unix-like operating systems The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use c

en.wikipedia.org

https://sun-p.tistory.com/115

 

98DAY / 스프링 스케쥴러 CRON식

스프링 스케쥴러 https://spring.io/guides/gs/scheduling-tasks/ CRON 크론 표현식  초   |  분  | 시 | 일  |  월  | 요일 |  연도 0~59 | 0~59 | 0~23 | 1~31 | 1~12 |  0~6 | 생략가능 요일 : 0 (일..

sun-p.tistory.com

http://www.cronmaker.com/;jsessionid=node0e22c4uy0l2pwjt8qafmy2wl4508784.node0?0 

(cronmaker Quartz cron방식으로 생성 테스트)

 

CronMaker

 

www.cronmaker.com

반응형

'JAVA' 카테고리의 다른 글

로그인 세션 시간 표시  (0) 2022.12.13
FCM(firebase) 연동  (0) 2022.11.07
JAVA 접근장치, 운영체제, 브라우저 확인  (0) 2022.02.12
중복로그인 처리(feat.전자정부)  (0) 2022.01.25
[구글 OTP] java  (4) 2021.09.14
Comments