[Spring] 스케줄러 Cron 사용법: Scheduler cron

소개

이 블로그에서는 스프링 프레임워크에서 제공하는 org.springframework.scheduling.annotation을 이용한 스케줄러 Cron 사용법에 대해 자세히 알아보겠습니다. 스케줄러 Cron은 정기적으로 반복되는 작업을 자동으로 처리할 수 있는 강력한 도구로, 이를 통해 개발자들은 반복적이고 예약된 작업을 효율적으로 관리할 수 있습니다.

스케줄러 cron

스케줄러 Cron이란?

스케줄러 Cron은 정기적인 작업을 예약하고 실행할 수 있는 방법 중 하나입니다. 특히, 특정 시간에 주기적으로 반복되는 작업이 필요한 경우에 유용하게 활용됩니다. 스프링에서는 이러한 스케줄링을 쉽게 구현할 수 있도록 @Scheduled 어노테이션을 제공하고 있습니다.

사용법

1. 의존성 추가

먼저, 스케줄러 Cron을 사용하기 위해서는 프로젝트에 스프링 스케줄링 모듈의 의존성을 추가해야 합니다. Maven을 사용하는 경우, 아래와 같이 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

2. @EnableScheduling 추가

@Scheduled 어노테이션을 사용하려면 스케줄링을 활성화하는 어노테이션인 @EnableScheduling을 설정 클래스에 추가해야 합니다.

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
public class SchedulerConfig {
    // 스케줄링 관련 설정
}

3. @Scheduled 어노테이션 사용

이제 스케줄링할 메서드에 @Scheduled 어노테이션을 추가합니다.

import org.springframework.scheduling.annotation.Scheduled;

public class MyScheduledTask {

    @Scheduled(cron = "0 0 1 * * ?", zone = "Asia/Seoul") // 매일 1시에 실행, Asia/Seoul 시간대
    public void performTask() {
        // 스케줄링할 작업 내용
        System.out.println("Scheduled task executed!");
    }
}

위의 예시에서 사용된 @Scheduled(cron = "0 0 1 * * ?", zone = "Asia/Seoul") 부분은 cron 표현식과 함께 zone 옵션을 사용하여 특정 시간대에서 스케줄링되도록 설정되어 있습니다.

cron 표현식 설명

cron 표현식은 6개의 필드로 구성되며 각 필드는 해당 시간 단위의 정보를 나타냅니다.

  • 초 (Seconds): 0부터 59까지의 값을 가집니다.
  • 분 (Minutes): 0부터 59까지의 값을 가집니다.
  • 시 (Hours): 0부터 23까지의 값을 가집니다.
  • 일 (Day of month): 1부터 31까지의 값을 가집니다.
  • 월 (Month): 1부터 12까지의 값을 가집니다.
  • 요일 (Day of week): 0부터 6까지의 값을 가집니다. (0이 일요일, 1이 월요일, …, 6이 토요일)

위의 예시에서 0 0 1 * * ?는 매월 1일 0시 0분에 실행하라는 의미입니다.

zone 옵션 설명

zone 옵션은 스케줄러가 실행될 때 사용할 타임존을 지정하는데 사용됩니다. 위의 예시에서는 zone = "Asia/Seoul"로 설정하여 Asia/Seoul 시간대에서 스케줄링되도록 했습니다.

예시

이제 구체적인 예시를 통해 실제로 어떻게 사용하는지 살펴보겠습니다.

예시: 주기적인 데이터 정리 작업

가령, 매주 일요일 새벽 3시에 데이터베이스에서 오래된 데이터를 정리하는 작업을 스케줄링하고 싶다고 가정해봅시다.

import org.springframework.scheduling.annotation.Scheduled;
import java.util.Date;

public class DataCleanupTask {

    @Scheduled(cron = "0 0 3 * * SUN", zone = "Asia/Seoul") // 매주 일요일 새벽 3시에 실행, Asia/Seoul 시간대
    public void cleanUpOldData() {
        // 데이터 정리 작업 수행
        System.out.println("Cleaning up old data at " + new Date());
    }
}

위의 코드에서는 @Scheduled 어노테이션을 이용하여 주기적으로 실행될 메서드를 정의하고, cron 표현식을 사용하여 매주 일요일 새벽 3시에 실행되도록 설정했습니다. 또한, zone 옵션을 이용하여 Asia/Seoul 시간대에서 동작하도록 했습니다.

마무리

이제 여러분은 스프링의 스케줄러 Cron을 사용하는 기본적인 방법과 실제 예시에 대해 알게 되었습니다. 이를 통해 주기적으로 실행되어야 하는 작업을 자동화하여 개발 생산성을 향상시킬 수 있습니다. 필요에 따라 다양한 cron 표현식과 타임존을 사용하여 자신의 스케줄링 요구사항에 맞게 설정해보세요!

[Java] Jakarta EE: 자바 기반 엔터프라이즈 애플리케이션의 핵심 (Java EE 진화)
[Java] Jakarta EE: 자바 기반 엔터프라이즈 애플리케이션의 핵심 (Java EE 진화)
[Java] Eclipse vs IntelliJ: 어떤 IDE가 나에게 더 적합한가?
[Java] Eclipse vs IntelliJ: 어떤 IDE가 나에게 더 적합한가?

Leave a Comment