2021-11-28
실시간으로 처리해야 하는 요청이 있는 반면에 정해진 시간에 처리해야 하는 작업이 있을 수 있다. 예를 들자면 백업 작업, 사용자에게 특정 시간에 메일을 보내야 할 경우가 그 예가 될 수 있다. 오늘은 특정 시간에 동작하도록 설정할 수 있도록 해주는 @Scheduled에 대하여 알아보자.
- 예제
@Scheduled(cron="10 30 12 * * *")
public void sendMail() {
//특정 시간에 매일을 보내는 메소드
System.out.println("메일을 발송합니다.")
}
위의 코드를 보자. 스케줄러를 설정하고 싶은 메소드에 @Scheduled 어노테이션을 붙여주면 해당 메서드는 @Scheduled에 지정해준 시간에 따라 동작하게 된다.
cron은 유닉스 계열에서 컴퓨터에서 사용하는 스케줄러를 나타내는 용어로써 Spring에서도 해당 단어를 사용한다. 순서는 " 초 분 시 일 요일 년(생략가능) " 마지막에 연도를 설정할 수 도 있지만 이는 생략이 가능하며, 잘 사용하지 않는다. 기호 "*" 들어간 위치에 따라 매초 매분 매시... 매월 등과 같이 사용된다. 참고로 요일 옵션은 1 ~ 7이나 SUN ~ SAT으로 사용할 수 있다.
초 : 0 ~ 59
분 : 0 ~ 59
시 : 0 ~ 23
일 : 1 ~ 31
월 : 1 ~ 12
요일 : 1 ~ 7