[Spring] @Scheduled 어노테이션을 통한 스케줄러 구현 cron

2021-11-28


Photo by Ruth D on Unsplash

실시간으로 처리해야 하는 요청이 있는 반면에 정해진 시간에 처리해야 하는 작업이 있을 수 있다. 예를 들자면 백업 작업, 사용자에게 특정 시간에 메일을 보내야 할 경우가 그 예가 될 수 있다. 오늘은 특정 시간에 동작하도록 설정할 수 있도록 해주는 @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


메인 이미지 출처 : Photo by Ruth D on Unsplash