Kotlin/Spring
(Spring) 크론 표현식에 대해 알아보자
너어디사니
2024. 6. 27. 15:00
이번 개인 프로젝트에서 나는 SoftDelete를 구현하기로 했다
SoftDelete란??
- Delete 쿼리가 날아갈 시점에 Delete를 시키지 않고 이 데이터를 업데이트 하면서 추후에 복구 및 증거 수집등에서 유용하게 사용하기 위한 방법이다
- 단점으로는 Query를 관리를 많이 해야 하고 DB에 데이터가 지속적으로 축적되지 않기 위해서 관리를 해줘야 한다
우선 SoftDelete를 구현하기 위해서 간단하게 정책을 설정하기로 했다
- SoftDelete 된 내용은 본인 혹은 관리자만 볼 수 있어야 한다
- SoftDelete 된 내용은 90일이 지나면 삭제가 되서 지속적으로 데이터가 축적되는 현상은 방지한다
이 2가지 정책을 가정하고 시작을 하려고 한다 우선 오늘은 2번째 정책인 90일이 지나면 자동으로 삭제가 되는 API를 만드려고 한다
우선 해당 기능을 사용하기 위해서 SpringScheduler를 사용하려고 한다 또한 SpringScheduler를 사용하기 위해서 크론 표현식에 대해서도 간단하게 공부할 예정이다
크론 표현식 이란??
크론 스케쥴러의 정규 표현식으로 우리가 문자를 검사할 때 정규식을 사용하는 것과 비슷한 맥락으로 날짜를 검사 할 때 사용하는 정규 표현식이다
크론 표현식 은 총 7개의 표현식으로 구성이 되어 있으며 맨 왼 쪽 부터 초 -> 분 -> 시 -> 일 -> 월 -> 요일 -> 년도 로 구성이 되어 있으며 이 중 년도는 생략이 가능하다
초 | 0~59 사이의 정수 |
분 | 0~59 사이의 정수 |
시 | 0~23 사이의 정수 |
일 | 1~31 사이의 정수 |
월 | 1~12 사이의 정수 및 JAN ~ DEC 사이의 월 표현식 |
요일 | 1~7 사이의 정수 및 SUN ~ SAT 사이의 일 표현식 |
년도 | 1970~2099 까지의 정수 |
위의 값을 제외하고도 특수 문자도 입력이 가능하다
특수 문자 | 의미 | 사용되는 곳 |
* | 모든 값을 의미한다 예를 들어서 분 자리에 *이 들어갈 경우 매 분 실행한다는 의미가 된다 | 모두 사용 가능 |
? | 해당 필드는 사용하지 않겠다는 의미이다 일 과 요일만 사용이 가능하다 | 일, 요일 |
- | 특정 기간을 지정하여 동작한다 | 모두 사용 가능 |
, | 특정 시간(날짜)을 지정하여 동작한다 | 모두 사용 가능 |
/ | 시작시간 / 반복 단위 -> 4 / 10 4분에 시작하여 10분단위로 반복한다 | 모두 사용 가능 |
L | 마지막 날짜(요일)에만 동작한다 | 일, 요일 |
W | 가장 가까운 평일에 동작, 일에만 적용이 된다 | 일 |
LW | 위에 L + W 이다 그달 마지막 평일에 적용이 된다 | |
# | 몇 번째 주와 요일 설정 | 요일 |
이상이다