본문 바로가기

프로그래밍/SpringFramework

스프링 프레임워크 @Scheduled 사용법

반응형

@Scheduled 어노테이션을 통해서 Spring 배치 작업을 할 수 있습니다.

fixedRate로 Interval 시간 지정하는 방법, 
@Scheduled(cron=" . . . ")와 같이 Cron 형식으로 입력하는 방법이 있습니다.

 

 1. fixedRate : Interval 지정

@Scheduled(fixedRate = 3000) 과 같이 fixedRate 뒤에 milliseconds를 입력합니다.
fixedRate = 3000을 입력하면 3초마다 반복 됩니다.

@Scheduled(fixedRate = 3000)
	public void everyThreeSecond() {
		log.info("현재시간은 {}", dateFormat.format(new Date()));
	}
}

 

 2. Cron

패턴은 왼쪽부터 [초, 분, 시, 일, 월, 요일]을 나타내는 6개의 공백으로 구분된 단일 필드 목록입니다. 요일은 MON, TUE, WED, THU, FRI, SAT, SUN과 같이 3글자로 나타냅니다.

예제

"0 0 * * * *" = 매일 1시간마다
"*/20 * * * * *" = 매일 20초간격으로
"0 0 5-7 * * *" = 매일 5시, 6시, 7시
"0 0 6,15 * * *" = 매일 오전 6시, 오후 3시 
"0 0/30 5-7 * * *" = 매일 5:00, 5:30, 6:00, 6:30, 7:00 and 7:30
"0 0 9-17 * * MON-FRI" = 월요일,화요일,수요일,목요일,금요일 09:00~17:00까지 한시간마다
"0 0 0 25 12 ?" = 매년 크리마스 자정에

 

 

실전 사용

@Scheduled(cron="0 */5 * * * *")
    public void testTask() throws InterruptedException, ExecutionException, IOException {
        StopWatch watch = new StopWatch();
        log.info("testTask");
        watch.start();
        testService.go();
        watch.stop();
        log.info(String.valueOf(watch.getTotalTimeMillis()));
    }

 

 

스프링부트 사용 시

@EnableScheduling 어노테이션을 @SpringBootApplication이 있는 클래스에 추가합니다.

@EnableScheduling
@SpringBootApplication(scanBasePackages = "kr.co.test.go")
public class GoApplication {
    public static void main(String[] args) {
        SpringApplication.run(GoApplication.class, args);
    }
}

 

 

 

반응형

'프로그래밍 > SpringFramework' 카테고리의 다른 글

스프링부트 @Controller 1  (0) 2021.04.19
Springboot MariaDB Mybatis 사용법  (0) 2021.04.15