서버/Spring
[Spring] Spring Scheduler
sm.jeon
2024. 1. 31. 02:10
반응형
Scheduler?
API를 통해 Spring Controller에 접근해 코드가 실행되도록 하는 게 아니라, 특정 일정 혹은, 특정 시간 간격으로 코드가 실행되도록 하고 싶을 때에 사용한다.
Enable Scheduling
Application 클래스에 @EnableScheduling 추가
@EnableScheduling
@SpringBootApplication
class SpringApplication
Scheduler로 동작할 함수 지정
@Component
class Scheduler {
@Scheduled
fun scheduler() {
}
}
클래스는 Bean에 등록하기 위해, @Component를 지정하고, 메서드에 @Scheduled를 지정한다.
Schedule이 실행되는 일정이나 주기는 아래와 같이 설정한다.
@Scheduled 파라미터
fixedDelay
메서드가 끝나는 시간 기준, 설정한 millisecond 뒤에 실행한다.
@Scheduled(fixedDelay = 1000L)
fun scheduler() {
}
fixedRate
메서드가 시작하는 시간 기준, 설정한 millisecond 뒤에 실행한다.
@Scheduled(fixedRate = 1000L)
fun scheduler() {
}
Scheduler를 병렬로 사용할 경우에, 클래스에 @EnableAsync, 메서드에 @Async를 추가한다.
initialDelay
initialDelay 값 이후 처음 실행된다.
@Scheduled(initialDelay = 1000L)
fun scheduler() {
}
fixedDelay, fixedRate 등 다른 옵션과 함께 사용한다.
Cron
크론 표현식에 의해 실행된다.
@Scheduled(cron = "0 0 * * * *") // 매 시 정각마다 실행
fun scheduler() {
}
첫 번째 필드부터 초, 분, 시간, 일, 월, 요일을 의미한다
반응형