Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

231218 TIL -Scheduler, Cron 본문

TIL

231218 TIL -Scheduler, Cron

Skipalong 2023. 12. 18. 23:48

오늘은 개인과제를 모두 마무리 했다. 이메일, 페이징, 이미지 업로드 등 새로 시도해본 기능들이 많아서 의미있었던 것 같다. 

그 중 오늘 새로 해 본 스케쥴링에 대해 정리를 해보겠다.

 

우선 요구사항은 수정된 지 90일이 지난 데이터를 삭제해주는 스케쥴러를 구현하는 것이었다. 

작성한 코드는 이렇다.

 

PostService에 deleteOldPosts라는 메서드를 추가하고 @Scheduled 어노테이션과 @Transactional 어노테이션을 추가해주고 @Scheduled 어노테이션에는 cron 형식으로 스케쥴이 언제 수행될 지를 정의해주었다.

 

Cron방식은 Cron은 6자리로 이루어져 있고, 초 - 분 - 시 - 일 - 월 - 요일 순이다.
ex)

* * * * * *  : 매초 실행

0 0 0/1 * * : 1시간마다 실행

0 0 7 * * * : 매일 7시에 실행

 

Cron 표현식 특수문자

  • * : 모든 값(매시, 매일, 매주처럼 사용한다.)
  • ? : 특정 값이 아닌 어떤 값이든 상관 없음
  • - : 범위를 지정할 때
  • , : 여러 값을 지정할 때
  • / : 증분값, 즉 초기값과 증가치를 설정할 때
  • L : 지정할 수 있는 범위의 마지막 값 표시
  • W : 가장 가까운 평일을 설정할 때
  • # : N번 째 특정 요일을 설정할 때

크론은 이런식으로 사용을 하면 된다고 한다.

그래서 위의 코드에서의 cron은 매일 0시 정각에 실행된다는 뜻이다. 그래서 이 메서드는 매일 정각 9시에 실행되서 수정된지 90일 지난 게시글을 삭제해주는 메서드인 것이다.

 

ninetyDaysAgo 는 메서드가 실행 될 때 시간의 90일 전을 의미하고, postRepository에

 

이 메서드를 추가해 수정된 지 90일이 된 게시글들을 찾아주고 deleteAll(oldPosts) 를 사용해 오래된 데이터를 삭제해주는 식으로 기능을 구현하였다. 그리고 스케쥴러를 활성화하기 위해서는 프로젝트 application 에

 

이렇게 @EnableScheduling을 추가해 주어야 한다. 스케쥴링을 강의에서 한 번 보고 처음 구현해보았는데 스케쥴링을 통해 자동화를 잘 사용하면 개발에 많은 도움이 될 것 같다. 

 

오늘도 배워간 게 있어서 어제보다 한걸음 더 발전한 것 같다. 내일부터는 강의위주로 들을 것 같은데 또 발전하기 위해 열심히 들어야겠다.

'TIL' 카테고리의 다른 글

231220 TIL - CI/CD  (0) 2023.12.21
231219 TIL - JpaRepository  (1) 2023.12.19
231215 TIL - Paging, Sorting  (0) 2023.12.16
231214 TIL - @PropertySource, @Value  (0) 2023.12.14
231213 TIL - Email인증 성공  (0) 2023.12.13