Skipalong's tistory
231218 TIL -Scheduler, Cron 본문
오늘은 개인과제를 모두 마무리 했다. 이메일, 페이징, 이미지 업로드 등 새로 시도해본 기능들이 많아서 의미있었던 것 같다.
그 중 오늘 새로 해 본 스케쥴링에 대해 정리를 해보겠다.
우선 요구사항은 수정된 지 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 |