JaeWon's Devlog
article thumbnail
반응형

회사에서 업무를 할당받게 되면서 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 양식을 만들 수 있습니다.

- http://www.cronmaker.com/?0 

 

CronMaker

 

www.cronmaker.com


참고

- https://itworldyo.tistory.com/40

- https://mytory.net/archives/601

반응형
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!