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 애노테이션을 사용하여 이를 보장합니다.
|