낭만 프로그래머

Spring MVC 5 에서 Spring Scheduler 사용하기 본문

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);
    }
}