@Scheduled
⏰ @Scheduled
정의
@Scheduled는 일정한 시간 간격 또는 특정 시각에 메서드가 자동 실행되도록 하는 애너테이션이다.
반복 작업, 배치성 처리, 주기적인 상태 점검 같은 작업에 사용한다.
🧩 Artifact
spring-context
🛠 사용법
@Configuration또는 설정 클래스에@EnableScheduling을 적용한다.
@EnableWebMvc
@EnableScheduling
@ComponentScan(basePackages = "org.test")
public class WebMvcTestConfiguration implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".jsp");
registry.viewResolver(resolver);
}
}
- 스케줄이 필요한 메서드에
@Scheduled를 적용한다.
@Component
public class ScheduleSample {
@Scheduled(cron = "0 0/1 * * * ?")
public void doEveryOneMinutes() {
System.out.println(LocalTime.now() + " : doEveryOneMinutes");
}
}

⚙️ @Scheduled 옵션
cron
- cron 표현식을 사용한다.
@Scheduled(cron = "0 0/1 * * * ?")
public void doEveryOneMinutes() {
System.out.println(LocalTime.now() + " : doEveryOneMinutes");
}
@Scheduled(cron = "#{@getCronForDeleteOldTaskQueue}")
public void deleteOldTaskQueue() {
Integer[] values = getBatchExecutingInfoValues(BatchJobTypeCode.BATCH_DELETE_OLD_TASK_QUEUE, new Integer[] {30});
taskQueueWebService.deleteOldTaskQueue(values[0]);
}
fixedDelay
- 메서드가 종료된 뒤부터 다음 실행까지의 간격을 지정한다.
- 단위는 ms다.
@Scheduled(fixedDelay = 3000)
private void scheduleTest() {
logger.error("hello");
}
fixedDelayString
- properties에서 주기 값을 읽어온다.
fixedRate
- 메서드가 시작된 시점을 기준으로 주기를 계산한다.
- 단위는 ms다.
fixedRateString
- properties에서 실행 주기 값을 읽어온다.
@Scheduled(fixedRateString = "${myscheduler.period}")
private void scheduleTest() {
logger.error("hello");
}
initialDelay
- 처음 실행되기까지의 지연 시간을 지정한다.
@Scheduled(initialDelay = 3000)
private void scheduleTest() {
logger.error("hello");
}
initialDelayString
- properties에서 초기 지연 시간을 읽어온다.
⚠️ 주의사항
@EnableScheduling이 있어야@Scheduled가 동작한다.- 스케줄 메서드는 일반적으로
void반환을 사용한다. - 동일 메서드가 겹쳐 실행될 가능성을 고려해야 한다.
- cron 표현식은 오타가 나면 실행이 안 되므로 주의해야 한다.
📌 정리
@Scheduled는 Spring의 예약 실행 애너테이션이다.cron,fixedDelay,fixedRate,initialDelay를 상황에 맞게 사용한다.- 반복 작업과 주기 점검에 유용하다.
댓글남기기