반응형
회사에서 업무를 할당받게 되면서 Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다.(Spring Batch 에 대해서는 추후 포스팅하기위해, 공부하고 정리하고 있습니다...)
그전에 간단하게 스프링에서 @Scheduled 어노테이션을 사용하여 간단하게 스케줄링 하는 것을 정리해보고자 합니다.
1. Spring Schedule(스케줄) 설정하기
- 간단하게 스프링부트(SpringBoot)에서 스케줄 설정은 아래와 같이 할 수 있습니다.
@SpringBootApplication
@EnableScheduling
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
@Component
public class TestScheduler {
// 매 10초마다 동작
@Scheduled(cron = "10 * * * * *")
public void run(){
System.out.println("현재 시간은 : " + new Date());
}
}
2. Cron 정리
2-1. Cron 양식
- 기본적인 양식은 초 분 시 일 월 주 (년) 형태로 이루어집니다.
1. 초 | 0 ~ 59 | - , * , / 사용 |
2. 분 | 0 ~ 59 | - , * , / 사용 |
3. 시간 | 0 ~ 23 | - , * , / 사용 |
4. 일 | 1 ~ 31 | - , * , ? , / , L , W 사용 |
5. 월 | 1 ~ 12 또는 JAN ~ DEC | - , * , / 사용 |
6. 요일 | 1 ~ 7 또는 SUN ~ SAT | - , * , ? , / , L , # 사용 |
7. 옵션(생략가능) | 1970 ~ 2099 | - , * , / 사용 |
2-2. Cron 조건들
- 각 양식에서 사용되는 조건은 아래와 같습니다.
* | 모든 조건(ALL) |
? | 설정 값이 없을 때(날짜와 요일에서만 사용) |
- | 범위값을 지정 |
, | 여러 값을 지정하여 구분 |
/ | 초기값과 증가치를 설정 |
L | 지정할 수 있는 범위의 마지막 값 설정(날짜와 요일에서만 사용) |
W | 가장 가까운 평일(요일 에서만 사용) |
# | 몇 주 무슨 요일 지정(ex: 2#1 => 첫 주 월요일, 6#3 => 3 주 금요일) |
2-3. 예제
- 아래 예제는 스프링에서 cron 을 사용할 때의 예제입니다.
참고!!!
Linux 에서 사용할때는 맨 앞의 초를 뺀 총 5자리만 사용하고, 이외에는 동일합니다.
매 10초 마다 | cron = "10 * * * * *" |
매월 15일 오전 12시 마다 | cron = "0 0 12 15 * *" |
매월 매일 14시 매 5분 단위 마다 | cron = "0 0/5 14 * * ?" |
매월 마지막 날 10시 15분 마다 | cron = "0 15 10 L * ?" |
2020~2022 동안 매월 마지막 일요일 12시 마다 | cron = "0 0 12 ? * 1L 2020-2022" |
3. Cron 생성
- 아래 사이트를 통해서 Cron 양식을 만들 수 있습니다.
참고
반응형
'BackEnd > Spring' 카테고리의 다른 글
[SpringBoot] CouchBase 연동하기 (0) | 2022.11.27 |
---|---|
[SpringBoot] @Valid 를 이용한 유효성(Validation) 검사(Feat. @RequestBody, @Validated) (0) | 2022.10.29 |
[Spring] WebClient 정리(API 통신) (0) | 2022.08.07 |
[Spring] JPA - 영속성 컨텍스트(Persistence Context) 정리 (0) | 2022.07.25 |
[Spring] JPA 정리 (0) | 2022.07.22 |