Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- window10
- Login
- @Scheduled
- 물리적주소
- WINDOW11
- 브라우저
- mysql
- JEUS
- User-Agent
- 암호화
- WebtoB
- programmers
- 알고리즘
- db
- URLRewirte
- eGov
- scheduled
- TailMe
- AES
- web server
- Java
- FCM
- Was
- Firebase
- dbms
- ua-parser
- Tomcat
- Oracle
- 개발자도구
- 접근장치
Archives
- Today
- Total
HD
Java @Scheduled Cron 표현식 본문
반응형
매번 프로젝트 스케쥴 걸때마다 찾아다녀서 기억 할겸 기록!!
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
http://www.cronmaker.com/;jsessionid=node0e22c4uy0l2pwjt8qafmy2wl4508784.node0?0
(cronmaker Quartz cron방식으로 생성 테스트)
반응형
'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