스프링 Scheduled
스케줄링을 하면 좋은 이유
- 자동화가 될 수 있다
- 특히 API를 통해 데이터를 가져와야 할 경우, 자동으로 데이터를 가지고 올 수 있다
- 사용자가 사용을 할때마다 데이터를 가지고 오면 매우 비효율적이다 (그래서 특정 시간을 둬서, 데이터를 가지고 오면 효율적으로 바꿀 수 있다)
- API를 스케줄링을 통해 가지고 와서 DB에 저장을 한다
- 그러면 사용자가 사용을 할 때마다 API를 찾는 것이 아닌, 서버 DB에서 바로 데이터를 찾을 수 있다
- 그만큼 API를 사용하는 데에, 비용도 줄일 수 있을 것
Batch와 Scheduler의 차이
- Batch 는 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단 없이 처리하는 것
- Scheduler 는 특정한 시간에 등록한 작업을 자동으로 실행시키는 것
- Spring Scheduler, Quartz 등이 있지만 Scheduler가 구현하기 더 쉽다
스케줄러
- @Scheduled(cron="크론 표현식") 어노테이션을 사용한다
- MainApplication.java 에 @EnableScheduling 을 어노테이션해놓은다
@SpringBootApplication
@EnableTransactionManagement
@EnableScheduling
public class ExampleApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
크론 표현식
내가 원하는 시간을 크론 표현식으로 만들어주는 사이트
# ┌───────────── second (0 - 59)
# │ ┌───────────── minute (0 - 59)
# │ │ ┌───────────── hour (0 - 23)
# │ │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * * <command to execute>
시간 | 크론 표현식 |
---|---|
매년 1월 1일 자정 | 0 0 0 1 1 * |
매월 1일 자정 | 0 0 0 1 * * |
매주 일요일 자정 | 0 0 0 * * * |
매일 자정 | 0 0 0 * * * |
매 시간 | 0 0 * * * * |
10초마다 | * /10 * * * * |
매일 8시, 9시, 10시 | 0 0 8-10 * * * |
- '*' 은 모든 것을 뜻한다
'Skill Stacks > Java_Spring' 카테고리의 다른 글
스프링 스크래핑 (0) | 2023.09.04 |
---|---|
스프링 API 문서 만들기 (0) | 2023.09.03 |
스프링 Transaction (0) | 2023.09.01 |
스프링 DB (0) | 2023.08.31 |
스프링 테스트 코드 (0) | 2023.08.30 |