@EnableScheduling 어노테이션은 스프링 프레임워크에서 스케줄링 기능을 활성화하는 데 사용되는 어노테이션입니다.
@Scheduled 어노테이션이 붙은 메소드들이 스케줄에 따라 실행될 수 있도록 합니다.기본적인 사용 방법은 다음과 같습니다:
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@EnableScheduling
public class SchedulerConfig {
// 추가적인 스케줄러 설정이 필요한 경우 여기에 작성
}
@Configuration 어노테이션과 함께 사용됩니다.@Scheduled 어노테이션이 붙은 메소드들을 자동으로 스케줄링합니다.@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
}
@EnableAsync와 함께 사용하여 스케줄된 작업을 비동기적으로 실행할 수 있습니다:
@Configuration
@EnableScheduling
@EnableAsync
public class SchedulerConfig {
// 설정 내용
}
특정 조건에 따라 스케줄링을 활성화할 수 있습니다:
@Configuration
@ConditionalOnProperty(name = "scheduling.enabled", havingValue = "true", matchIfMissing = true)
@EnableScheduling
public class SchedulerConfig {
// 설정 내용
}
@EnableScheduling이 적용된 설정을 테스트할 때:
@SpringBootTest
@TestPropertySource(properties = "scheduling.enabled=true")
class SchedulerConfigTest {
@Autowired
private TaskScheduler taskScheduler;
@Test
void testSchedulerConfiguration() {
assertNotNull(taskScheduler);
assertTrue(taskScheduler instanceof ThreadPoolTaskScheduler);
// 추가적인 검증 로직
}
}
@EnableScheduling 어노테이션은 스프링 애플리케이션에서 스케줄링 기능을 쉽게 활성화할 수 있게 해주는 강력한 도구입니다. 이를 통해 정기적인 작업, 배치 프로세스, 데이터 동기화 등 다양한 시나리오에서 유용하게 사용될 수 있습니다. 그러나 스케줄링의 적절한 사용과 리소스 관리, 오류 처리 등에 주의를 기울여야 합니다. 잘 설계된 스케줄링 시스템은 애플리케이션의 자동화와 효율성을 크게 향상시킬 수 있지만, 부적절한 사용은 시스템 성능에 부정적인 영향을 미칠 수 있습니다.
@Scheduled
@EnableAsync
@Configuration
@Conditional
@SpringBootTest