1. 스케줄링이란
- 스프링 부트에서 작업을 스케줄링할 수 있음
- 스케줄링 방식은 "특정 시간에 실행 / 특정 시간 간격으로 실행" 의 2가지 방식이 존재
- @Scheduled 어노테이션으로 구현
2. 스케줄링 사용 방법
- SpringConfig 클래스 생성
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@EnableScheduling
public class SpringConfig {
}
2-1. 특정 시간에 실행하도록 스케줄링
@Scheduled(cron = "0 30 13 * * *") // cron 표현식 사용
public void scheduling() {
// 스케쥴링을 원하는 코드
}
- cron 표현식을 사용하여 원하는 시간 설정
- cron = "초 분 시 일 월 요일"
- * : 모든 범위로 설정
- 요일 : 0부터 시작 / 일요일=0, 월요일=1 ... 토요일=6
- 위의 예에서는 (역순으로) 매주, 매월, 매일, 13시 (오후 1시), 30분 0초로 시간 설정
- cron = "초 분 시 일 월 요일"
2-2. 특정 시간 간격으로 실행하도록 스케줄링
@Scheduled(fixedDelay = 1000) // Fixed Delay 방식
public void scheduling() {
// 스케쥴링을 원하는 코드
}
@Scheduled(fixedRate = 1000) // Fixed Rate 방식
public void scheduling() {
// 스케쥴링을 원하는 코드
}
- Fixed Delay, Fixed Rate 공통 사항
- (fixedDelay / fixedRate = n) 에서 n은 ms 에 해당
- 위의 예에서는 1000ms, 즉 1초 마다 한 번씩 실행함
- Fixed Delay vs Fixed Rate
- Fixed Delay : 전에 실행했던 작업이 끝나고 n ms 이후에 실행
- 한 번에 한 개씩의 작업을 실행 시키고 싶을 때 유용 => 종속적인 작업들에 대해서 유용
- Fixed Rate : 작업이 매 n ms 마다 실행
- 이전의 실행은 확인하지 않음 => 독립적인 작업들에 대해서 유용
- Fixed Delay : 전에 실행했던 작업이 끝나고 n ms 이후에 실행
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 스프링 부트 엑셀 파일에 데이터 쓰기 (0) | 2024.03.27 |
---|---|
[AWS] EC2 서버 시간 설정 (TimeZone 변경) (0) | 2024.03.26 |
[Spring Boot] JSON String , Object 변환 (JSONParser, Gson, object-mapper) (1) | 2024.03.16 |
[Spring Boot] JSON 객체 송수신 예제 (0) | 2024.03.15 |
[Spring Boot] JaCoCo로 테스트 커버리지 확인 (3) | 2024.01.30 |