본문 바로가기

SPRING

Spring Framework @Scheduled 사용 방법

반응형

@Scheduled 어노테이션은 Spring 프레임워크에서 일정 주기로 메서드를 실행할 때 사용됩니다.

 

1. Fixed Rate 설정

  • fixedRate 속성을 사용하여 메서드 호출 간격을 밀리초 단위로 지정합니다.
import org.springframework.scheduling.annotation.Scheduled;

public class MyScheduledTask {

    @Scheduled(fixedRate = 5000) // 5초마다 실행
    public void myTask() {
        // 실행할 코드
    }
}

 

 

2. Fixed Delay 설정

  • fixedDelay 속성을 사용하여 이전 메서드 실행이 완료된 시점부터 다음 메서드 호출까지의 시간을 밀리초 단위로 지정합니다.
import org.springframework.scheduling.annotation.Scheduled;

public class MyScheduledTask {

    @Scheduled(fixedDelay = 10000) // 이전 실행이 완료된 시점으로부터 10초 후에 실행
    public void myTask() {
        // 실행할 코드
    }
}

 

 

3. Cron 표현식 사용

  • cron 속성을 사용하여 cron 표현식으로 시간을 지정할 수 있습니다.
  1. 초 (Seconds): 0-59
  2. 분 (Minutes): 0-59
  3. 시 (Hours): 0-23
  4. 일 (Day of month): 1-31
  5. 월 (Month): 1-12 또는 JAN-DEC
  6. 요일 (Day of week): 0-6 또는 SUN-SAT

또한, 몇 가지 특별한 문자와 기호를 사용하여 더 유연한 cron 표현식을 만들 수 있습니다:

  • * (Asterisk): 모든 값. 예를 들어, 모든 분에 실행하려면 * * * * * *를 사용합니다.
  • ? (Question mark): 특정 필드의 값이 지정되지 않았음을 나타냅니다. 일 또는 요일 중 하나만 지정하는 데 사용됩니다.
  • - (Hyphen): 범위를 나타냅니다. 예를 들어, 1-5는 1부터 5까지의 값입니다.
  • , (Comma): 여러 값. 예를 들어, 월요일과 수요일에 실행하려면 MON,WED를 사용합니다.
# 매 분 실행
@Scheduled(cron = "0 * * * * *")
public void scheduledMethod() {
    // 메서드 내용
}

# 매일 정오에 실행
@Scheduled(cron = "0 0 12 * * ?")
public void scheduledMethod() {
    // 메서드 내용
}

# 매주 월요일 오전 10시 30분에 실행
@Scheduled(cron = "0 30 10 ? * MON")
public void scheduledMethod() {
    // 메서드 내용
}

 

 

반응형