Java/Spring
Spring MVC 5 에서 Spring Scheduler 사용하기
조영래
2021. 12. 14. 16:30
Spring MVC 5에서 Scheduler를 사용해 보려고 task:annotation-driven 을 xml에 사용해 보았으나 동작을 하지 않았다.
이유를 찾아 보려 했지만 실패했다. 그래서 자바소스에 어노테이션으로 작업하였더니 돌아간다. ㅎㅎ
XML 설정 파일
...
<!-- Annotation -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- Base package -->
<context:component-scan base-package="com.company.frmm.scheduler"></context:component-scan>
...
Scheduler 파일
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@EnableScheduling
public class FrmmScheduler {
@Scheduled(fixedDelay=10000)
public void init() {
System.out.println("동작여부 확인");
}
}
Config 파일
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
private final int POOL_SIZE = 10;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(POOL_SIZE);
threadPoolTaskScheduler.setThreadNamePrefix("frmm-scheduled-task-pool-");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}