@Scheduled 사용해 보았다.

노혁·2023년 7월 7일
1
post-thumbnail

스케줄러란?

일정한 시간간격 또는 일정한 시각에 특정 로직을 돌리기 위해 사용하는 것을 Scheduler라고 한다.

프로젝트를 하는 도중 매일 자정이 될때마다 초기화 해야되는 기능이 있었다. ‘이것을 어떻게 해결하지?’ 라고 생각하던 와중에 Scheduler라는 것을 발견하게 되었다.

@Scheduled 기본 사용법

아래와 같이 Application 클래스에서 EnableScheduling 어노테이션을 사용하여 스케줄링 기능을 사용할 수 있는 상태로 만들어 준다.

실제 프로젝트에서 사용한 코드

다음으로 아래와 같이 수행해야할 메서드위에 @Scheduled 어노테이션으로 스케줄 시간을 설정해주면 된다.

실제 프로젝트에서 사용한 코드

위 코드는 00시가 되면 user의 diaryCount가 초기화되는 코드이다.

@Scheduled 설정 옵션

  • cron: 크론 표현식을 이용하여 스케줄링한다.
@Scheduled(cron = "0 0 0 * * *") // 순서대로 분, 시, 일, 월, 요일, 년을 나타낸다.
  • fixedDelay / fixedDelayString: 이전 작업이 종료되고 다시 시작되는 시간을 설정한다.
@Scheduled(fixedDelay = 5000 또는 fixedDelayString = "5s") // 이전 스케줄 작업 완료 후 1초 뒤에 다시 시작
  • fixedRate / fixedRateString: 이전 작업의 종료 여부와 상관없이 설정된 시간 간격으로 반복한다.
@Scheduled(fixedRate = 5000 또는 fixedRateString = "5s") // 매 5초마다 수행
  • initialDelay / initialDelayString: Job을 처음 실행까지 초기 딜레이(대기) 시간 설정
@Scheduled(initialDelay = 5000 또는 initialDelayString = "5s") // App 실행 완료 후 5초 후에 실행

@Scheduled 적용 필수 조건

  • cron 표현식, fixedDelay, fixedRate 와 같은 실행 주기를 설정하는 옵션을 필수로 한 가지는 적용해야한다.
  • @Scheduled를 통해 수행되는 job 메소드는 return type이 void 여야하고, parmeter를 줄 수 없다는 제약이 있다.
profile
백엔드 개발자입니다.

0개의 댓글