@EnableScheduling 어노테이션 추가
@EnableScheduling // 추가 @SpringBootApplication public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(AirCncApplication.class, args); } }
@Slf4j @Component @RequiredArgsConstructor public class Scheduler { private final TripService tripService; /** * 입실 스케줄러 * 오후 3시가 되면 해당 날짜에 해당하는 RESERVED -> Traverling **/ @Scheduled(cron = "0 0 15 * * *") //초 분 시간 일 월 요일 public void startCheckIn(){ tripService.startTrips(); // 서비스 예상 로직 // check_out이 오늘이고, Status가 TRAVERLING인 TRIP들을 조회한다. // 전부 변경해준다. // 이상 끝 참 쉽죠? } /** * 퇴실 스케줄러 * 오전 11시가 되면 해당 날짜에 해당하는 TRAVERLING -> DONE **/ @Scheduled(cron = "0 0 11 * * *") //초 분 시간 일 월 요일 public void endCheckOut(){ tripService.endTrips(); // 서비스 예상 로직 // check_out이 오늘이고, Status가 TRAVERLING인 TRIP들을 조회한다. // 전부 변경해준다. // 이상 끝 참 쉽죠? } }
예상되는 문제
Q. 입실 퇴실이 꼬일 가능성이 없나요?
A. 제 생각에는 startTrips(), endTrips() 에 이전의 상태에 대한 유효성 검증을 해 준다면 꼬일 가능성은 없을 것 같습니다.