본문 바로가기
Skill Stacks/Java_Spring

스프링 Scheduled

by JayAlex07 2023. 9. 2.

스프링 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);
    }

}

 

크론 표현식

 

내가 원하는 시간을 크론 표현식으로 만들어주는 사이트

 

CronMaker

 

www.cronmaker.com

#  ┌───────────── 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