일정한 시간간격 또는 일정한 시각에 특정 로직을 돌리기 위해 사용하는 것을 Scheduler라고 한다.
프로젝트를 하는 도중 매일 자정이 될때마다 초기화 해야되는 기능이 있었다. ‘이것을 어떻게 해결하지?’ 라고 생각하던 와중에 Scheduler라는 것을 발견하게 되었다.
아래와 같이 Application 클래스에서 EnableScheduling 어노테이션을 사용하여 스케줄링 기능을 사용할 수 있는 상태로 만들어 준다.
실제 프로젝트에서 사용한 코드
다음으로 아래와 같이 수행해야할 메서드위에 @Scheduled 어노테이션으로 스케줄 시간을 설정해주면 된다.
실제 프로젝트에서 사용한 코드
위 코드는 00시가 되면 user의 diaryCount가 초기화되는 코드이다.
@Scheduled(cron = "0 0 0 * * *") // 순서대로 분, 시, 일, 월, 요일, 년을 나타낸다.
@Scheduled(fixedDelay = 5000 또는 fixedDelayString = "5s") // 이전 스케줄 작업 완료 후 1초 뒤에 다시 시작
@Scheduled(fixedRate = 5000 또는 fixedRateString = "5s") // 매 5초마다 수행
@Scheduled(initialDelay = 5000 또는 initialDelayString = "5s") // App 실행 완료 후 5초 후에 실행