본문 바로가기

Study Information Technology

자바 스프링 부트를 이용한 작업 생성과 스케줄링

728x90
반응형

자바 스프링 부트를 이용한 작업 생성과 스케줄링

Overview

스프링 부트는 자바 기반의 웹 애플리케이션을 개발하기 위한 강력한 프레임워크입니다. 여기에는 백그라운드 작업을 스케줄링하고 관리하는 기능이 포함되어 있어, 주기적으로 실행되어야 하는 작업을 구현할 때 유용하게 사용될 수 있습니다. 이 기능을 활용하면 애플리케이션의 다양한 비즈니스 요구사항을 충족시킬 수 있습니다.

설정하기

스프링 부트에서 작업을 생성하고 스케줄링하기 위해서는 몇 가지 설정이 필요합니다. 먼저, 프로젝트에 스프링 부트 스케줄링 의존성을 추가해야 합니다. spring-boot-starter 의존성을 이용하면 스프링의 기본 설정들과 함께 스케줄링 기능을 쉽게 사용할 수 있습니다.

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

이렇게 추가한 후에는 스프링 부트 애플리케이션에서 @EnableScheduling 어노테이션을 사용하여 스케줄링을 활성화해야 합니다. 이 어노테이션은 메인 애플리케이션 클래스에 추가됩니다.

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableScheduling
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

작업 정의하기

이제 스케줄링할 작업을 정의해야 합니다. 스프링에서는 @Scheduled 어노테이션을 사용하여 메서드를 주기적으로 실행할 수 있습니다. 이 어노테이션은 메서드에 적용되며, 실행 주기를 설정할 수 있는 다양한 속성들이 있습니다.

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTasks {

// 고정된 주기로 실행 (예: 매 10초마다 실행)
@Scheduled(fixedRate = 10000)
public void fixedRateTask() {
// 실행될 코드 작성
System.out.println("Fixed rate task - " + System.currentTimeMillis() / 1000);
}

// cron 표현식 사용
@Scheduled(cron = "0 0 0 * * MON-FRI")
public void cronTask() {
// 월요일부터 금요일까지 매일 자정마다 실행될 코드 작성
System.out.println("Cron task - " + LocalDateTime.now());
}
}

예외 처리와 로깅

스케줄링된 작업에서 발생할 수 있는 예외를 처리하는 것이 중요합니다. 예외가 발생할 경우 애플리케이션이 중단되지 않도록 하기 위해 각 작업 메서드 내부에서 예외를 적절히 처리해야 합니다. 또한, 로깅을 통해 작업의 실행 상태를 추적할 수 있습니다.

@Scheduled(fixedDelay = 5000)
public void scheduledTaskWithException() {
try {
// 예외가 발생할 수 있는 코드
throw new RuntimeException("Error in scheduled task");
} catch (Exception ex) {
// 예외 처리
log.error("Scheduled task error:", ex);
}
}

에러 처리와 해결책

위의 예제에서는 RuntimeException이 발생할 수 있습니다. 이 경우에는 try-catch 블록을 사용하여 예외를 잡고, log.error를 통해 로깅하고 있습니다. 예외 발생 시 대응 방법은 예외의 성격에 따라 다를 수 있으며, 문제를 식별하고 수정하는 과정이 필요합니다.

참고 문서

이 문서는 스프링 프레임워크의 스케줄링에 관한 공식적인 참고 자료로, 스케줄링 설정 및 사용 방법에 대한 다양한 예제와 설명을 포함하고 있습니다.

728x90
반응형