사용 계기

나는 일정 시간마다 동작하는 기능을 구현해야 했다.
바로 아래의 동작이다.

매일 0시에 유저들의 오늘의 명언 설정하기

여러 자료를 찾아보니, 스프링부트에서 Scheduler기능을 제공한다고 한다.
따라서 이 기능을 사용해 구현하기로 결정했다.

스케쥴러 사용

클래스 생성

Scheduler를 관리할 클래스를 만든다.

@Component
@EnableScheduling
@RequiredArgsConstructor
public class ContentsScheduler {

}
  • 스케쥴러 클래스는 스프링 빈에 등록되어야 하기에 @Component를 붙인다.
  • 스케쥴러가 동작하도록 해주는 어노테이션 @EnableScheduling을 붙인다.
    • main이 위치한 Application 클래스에 붙여도 된다.

스케쥴러 등록(@Scheduled) 및 주기 설정

@Component
@EnableScheduling
@RequiredArgsConstructor
public class ContentsScheduler {

    private final ContentsService contentsService;

    // 매일 0시 실행
    @Scheduled(cron = "0 0 0 * * *")
    public void updateTodayQuotation() {
        contentsService.updateTodayQuotation();
    }
}
  • 주기적으로 실행될 메소드들을 생성하고 @Scheduled를 붙인다.
  • corn 값
    • 순서대로 “초 분 시 일 월 요일” 을 의미한다.
    • *을 적을 경우 모든 조건을 의미한다.

참고