티스토리 뷰

@EnableScheduling
@SpringBootApplication
public class ScheduleApplication {

    public static void main(String[] args) {
        SpringApplication.run(ScheduleApplication.class, args);
    }

}

먼저, background task executor 를 생성하기 위해 @EnableScheduling 을 추가합니다.

이 annotation 이 없으면, @Scheduled에 의해 task가 동작하지 않습니다.

@Component
@Log
public class ScheduledTasks {

    @Scheduled(fixedDelay = 10000)
    public void runEvery10Sec(){
        log.info("runEvery10Sec");
    }

    @Scheduled(cron = "0 0 17 * * *")
    public void runAt9EveryDay(){
        log.info("runAt17EveryDay");
    }
}

주기적으로 수행할 함수에 @Scheduled 를 추가하고, 어떤 주기로 동작할지에 따라 적절한 Property를 사용하면 됩니다.

fixedDelay는 고정된 주기(ms)에 마다 실행을 하고 cron은 cron표현식에 주기에 따라 실행을 합니다.

fixedDelay

고정된 딜레이 시간 마다 메서드를 호출( 딜레이 시간 측정은 함수 호출 종료 시점부터 )

fixedRate

고정된 딜레이 시간 마다 메서드를 호출( 딜레이 시간 측정은 함수 호출 시작 시점부터 )

위의 코드를 수행하면, 아래 로그와 같이 첫번째 함수는 10초 마다 실행을 하고, 두번째 함수는 매일 5시 정각에만 실행이 됩니다.

2020-05-20 16:53:01.781  INFO 24635 --- [   scheduling-1] com.example.schedule.ScheduledTasks      : runEvery10Sec
2020-05-20 16:53:01.785  INFO 24635 --- [           main] c.example.schedule.ScheduleApplication   : Started ScheduleApplication in 1.241 seconds (JVM running for 1.672)
2020-05-20 16:53:11.784  INFO 24635 --- [   scheduling-1] com.example.schedule.ScheduledTasks      : runEvery10Sec
2020-05-20 16:53:21.786  INFO 24635 --- [   scheduling-1] com.example.schedule.ScheduledTasks      : runEvery10Sec
2020-05-20 16:57:30.461  INFO 25081 --- [           main] c.example.schedule.ScheduleApplication   : Started ScheduleApplication in 1.582 seconds (JVM running for 1.995)
2020-05-20 17:00:00.010  INFO 25081 --- [   scheduling-1] com.example.schedule.ScheduledTasks      : runAt9EveryDay

 

Spring 에서 크론 표현식은 아래와 같습니다.

 

요일
0-59 0-59 0-23 1-31 1-12 0-6( 일요일-토요일 )

 

* * 9 * * * : 매일 9시의 매분 매초마다 실행

0 */5 * * * * : 5분 마다 실행( 5, 10, 15 분 ... )

소스코드

github.com/ggamzang/spring-schedule

참조

https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#scheduling-enable-annotation-support

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함