특정 시간이나 주기적으로 반복되는 작업을 해야 할 때

1. 사용 설정

App내에 main 메서드가 있는 클래스의 선언부에 Schedule 기능 사용 선언

@EnableScheduling
public class StudyBootApplication {...}

2. Schedule을 구현할 Class 생성

1. 클래스를 생성
2. 반복 작업 할 Method를 생성
3. 메서드 선언부에 @Scheduled를 선언하고 반복주기를 설정

3. 반복 주기

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