특정 시간이나 주기적으로 반복되는 작업을 해야 할 때
App내에 main 메서드가 있는 클래스의 선언부에 Schedule 기능 사용 선언
@EnableScheduling
public class StudyBootApplication {...}
1. 클래스를 생성
2. 반복 작업 할 Method를 생성
3. 메서드 선언부에 @Scheduled를 선언하고 반복주기를 설정
1. fixRate
- 고정(일정) 간격으로 반복 실행
- 서버가 실행 되고 실행
- 해당 메서드가 언제 종료 되는지 상관 없음
- fixRate=밀리세컨즈 or fixRateString="밀리세컨즈"
2. fixDelay
- 고정(일정) 간격으로 반복 실행
- 해당 메서드가 종료 후 일정 간격 실행
- fixDelay=밀리세컨즈 or fixDelayString="밀리세컨즈"
3. 공통사항
- 서버가 실행 하고 처음 시작 간격을 설정
- initialDelay
- initialDelayString = "1000"
4. Cron
- Server(Linux)의 일정 주기별 반복 실행
- Linux에서는 Crontab과 같음
- 총 6개의 단위로 이루어짐 ( 초 분 시 일 월 요일)
- 초(0-59) 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)
- 요일은 0,7은 일요일, 월요일 1, 화요일 2,...,토요일 6
- * 은 모든것 (매초, 매분, 매시, 매일, 매월,,...)
* * * * * * : 매초마다 실행, 1초간격 실행
10 * * * * * : 매시 매분 10초에 실행, 1시 0분 10초, 1시 1분 10초,
5 50 * * * * : 매시 50분 5초에 실행, 1시 50분 5초, 2시 50분 5초
0 0 0 * * * : 매일 자정마다 실행
0 0 0 1 * * : 매월 1일 자정마다 실행
0 0 0 24 12 * : 매년 12월 24일 자정마다 실행
0 0 9 * * 1 : 매주 월요일 아침 9시 정각마다 실행
20 30 */3 * * * : 매일 3시간 간격으로 실행 (0시 30분 20초, 3시 30분 20초..)
0 0 0 * * 6-7 : 매주 토-일 자정에 실행
0 0 9-18 * * 1-5 : 매주 월-금요일까지 오전 9시-18시까지 매시 정각 마다 실행
0 0 9-18/4 * * 1-5 : 매주 월-금요일까지 오전 9시-18시까지 4시간 간격으로 실행
0 0 0 * * 1,3,5 : 월, 수, 금요일 자정마다 실행
/https://spring.io/blog/2020/11/10/new-in-spring-5-3-improved-cron-expressions