Preloader image
DDD

자바

spring boot scheduld 의 cron 설정을 propertis 또는 yaml 에서 적용하는 방법

작성자 관리자 (admin)
조회수 4,273
입력일 2024-05-17 09:53:02

spring boot scheduld 의 cron 의 감ㅅ을 propertis 또는 yaml 에서 설정하는 방법

1. 외부 설정 파일 설정
먼저 application.properties 또는 application.yml 파일에 크론 표현식을 정의합니다.

application.properties
cron.expression=0 * * * * ?
application.yml
cron:
  expression
: "0 * * * * ?"

2. 스케줄링 클래스에서 변수 주입
이제 @Value 애노테이션을 사용하여 설정 파일의 값을 주입받아 @Scheduled 애노테이션에서 사용할 수 있습니다.

- java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

    // application.properties 또는 application.yml에서 정의된 크론 표현식 값 주입
    @Value("${cron.expression}")
    private String cronExpression;

    // 주입받은 크론 표현식 값 사용
    @Scheduled(cron = "#{@scheduledTasks.cronExpression}")
    public void performTaskWithCron() {
        System.out.println("Cron Task: " + LocalDateTime.now());
    }
}
위의 코드에서 @Value 애노테이션을 사용하여 외부 설정 파일에서 정의한 크론 표현식을 cronExpression 변수에 주입받습니다. @Scheduled 애노테이션의 cron 속성 값으로 #{@scheduledTasks.cronExpression}을 사용하여 스프링이 이를 SpEL 표현식으로 해석하도록 합니다.

3. 스프링 컨텍스트에서 관리되는 빈으로 등록
위의 예제에서는 #{@scheduledTasks.cronExpression} 표현식이 ScheduledTasks 클래스의 cronExpression 필드를 참조하도록 설정합니다. 이를 위해 ScheduledTasks 클래스가 스프링 컨텍스트에서 관리되는 빈이어야 합니다. @Component 애노테이션을 사용하여 이를 보장합니다.