실전 프로젝트 3일차. 집중해야될 것만 집중하기로 하고 서비스 바운더리를 줄였다.
정해진 시간에 지정된 메서드를 실행해주는 어노테이션. @EnableScheduling
을 application 클래스 위에 달아줘야 한다.
매일 자정에 작동하는 메서드
@Scheduled(cron = "0 0 0 * * ?") // 매일 자정 작동.
public void updateTicketInfoAtMidnight() {
List<TicketInfo> ticketInfos = ticketInfoRepository.findAll();
for (TicketInfo ticketInfo : ticketInfos) {
LocalDate eventDate = ticketInfo.getEvent().getDate();
if (LocalDate.now().isAfter(eventDate)) {
ticketInfo.setAvailable(false);
}
ticketInfoRepository.saveAll(ticketInfos);
}
}
cron 표현식은 6개의 필드로 구성된다.
초 (0-59)
분 (0-59)
시 (0-23)
일 (1-31)
월 (1-12)
요일 (0-7, 일요일이 0과 7)
*을 넣으면 매번 실행된다는 뜻.
(cron = "0 0 0 * * ?")는 0초 0분 0시 매일 매월(요일필드는 사용하지않음)에 동작된다는 뜻.