[cron 시간 설정방법]
@schedule(cron="") 구문은 특정 시간에 실행할 작업을 예약하기 위해 프로그래밍에 사용되는 코드 스니펫이다
"cron" 매개변수는 미리 정의된 구문을 기반으로 작업을 실행해야 하는 시간과 빈도를 지정하는 데 사용된다
식은 6개의 필드를 사용하여 초, 분, 시간, 일, 월 및 요일 값을 지정한다.
cron
:예약 빈도 및 타이밍을 정의
식은 6개의 필드를 사용하여 초, 분, 시간, 일, 월 및 요일 값을 지정 할 수 있다.
cron = " * * * * * * " 6 자리 지정 가능
각 자리 마다
* 초(0-59),
* 분(0-59),
* 시간(0-23),
* 일(1-31),
* 월(1-12 또는 1월-12월),
* 요일(0-7 또는 SUN-SAT, 여기서 0과 7은 모두 일요일을 나타냄)
[예문]
@schedule(cron="0 0 17 * * ?" )
매월 매일, 매일 오후 5시에 작업 실행을 의미합니다.
물음표는 날짜 필드에 특정 지정값이 없을때 사용
그외에 기능
fixedDelay:
- 하나의 실행 종료와 다음 실행 시작 사이의 고정 지연을 지정한다.
- 예를 들어 @Scheduled(fixedDelay = 5000)는 이전 실행이 완료된 후 5초마다 작업을 실행한다
fixedRate:
- 작업은 이전 실행이 완료되었는지 여부에 관계없이 지정된 속도로 실행된다
- 작업이 실행되어야 하는 고정 속도를 지정한다.
- 예를 들어 @Scheduled(fixedRate = 10000)는 10초마다 작업을 실행한다
initialDelay
- : 작업을 처음 실행하기 전 지연 시간(밀리초)을 지정한다.
- 예를 들어 @Scheduled(initialDelay = 10000)는 애플리케이션이 시작된 후 10초 후에 작업을 시작한다.
zone
- : 작업이 실행되어야 하는 시간대를 지정한다.
- 예를 들어 @Scheduled(cron = "0 30 18 * * ?", zone = "America/New_York")는 동부 시간대에서 매일 오후 6시 30분에 작업을 실행한다.
이러한 조건 중 하나 이상을 조합하여 작업의 예약 조건을 정의 할수 있다 .
[적용해보기]
- 먼저 프로젝트에 Spring Boot Starter 종속성을 추가해야 합니다. build.gradle 파일에 다음 코드를 추가할 수 있다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
}
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyTask {
@Scheduled(cron = "0 0 12 * * ?") // run at 12 PM every day
public void runTask() {
// add your task logic here
}
}
이 예에서 MyTask 클래스는 cron 표현식 "0 0 17 * * ?"을 기반으로 매일 오후 5시에 실행되는 runTask()라는 메서드를 정의한다.
마지막으로 Spring Boot 애플리케이션에서 예약을 활성화해야 한다. 기본 Spring Boot 애플리케이션 클래스에 @EnableScheduling 주석을 추가하여 이를 수행할 수 있다 .
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
혼자 공부중... 'ㅡ'
'IT > SPRING' 카테고리의 다른 글
MyBatis 문법 총 정리 : <if>, <choose>, <when>, <otherwise>, <trim>, <foreach> (0) | 2023.07.03 |
---|---|
HttpServletResponse , response.setHeader() 사용법 (0) | 2023.05.08 |
[spring mvc] 경로 패턴 적용을 위해서 인터셉터 interceptor사용하기 (0) | 2023.05.04 |