서버/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() {
}

 

첫 번째 필드부터 초, 분, 시간, 일, 월, 요일을 의미한다

반응형