본문 바로가기

개발일지/tools

프로그램 주기적으로 실행/@Scheduled 어노테이션 사용하기/ 크론 표현식 생성기

스프링 프로젝트에서 주기적으로 프로그램을 실행하게 해주는 @Scheduled를 사용하고 있다.

 

@Scheduled 에  cron을 입력하면 cron표현식에 맞는 주기마다 실행된다.

 

우선 ScheduledTask.java 파일을 생성해서

 

@Component

@Slf4j

 

어노테이션을 붙인다. 

 

@Scheduled(cron = "0 0 16 * * MON-FRI")
	//@Scheduled(fixedDelay = 500000)
	public void postBlog() throws Exception {
		log.info("postBlog start!");
		
		blogService.postBlog();
	}

요즘 개발하고 있는 자동 포스팅 프로그램인데

월요일 부터 금요일까지 4시에는 한국은행의 환율 정보 API를 호출해서 티스토리 블로그에 자동으로 

포스팅을 하도록 해놨다.

 

(현재 기능을 수정 개발 중이기 때문에 돌아가고 있지는 않다)

 

fixedDelay는 정해진 주기마다 프로그램이 실행되도록 설정하는 어노테이션이다.

 

 


저기

@Scheduled

cron 표현식을 입력해야하는데

 

자유자재로 cron 표현식을 사용할 줄은 몰라서

크론 표현식 생성기를 찾아봤고 유용한 사이트를 찾았다.

 

http://www.cronmaker.com/?0 

 

CronMaker

 

www.cronmaker.com

 

cron표현식을 자유자재로 만들수 있기 전까지는 이 사이트를 사용하면 좋을 것 같다.

 

실행예시)

//매주 월-금 4시에 실행해줘
@Scheduled(cron = "0 0 16 * * MON-FRI")

// 매일 9시에 실행해줘!
@Scheduled(cron = "0 0 9 * * *")

//일요일 13시에 실행해줘
@Scheduled(cron = "0 0 13 ? * SUN")

 

내가 항상 개발하고 싶어하는 "자동화 기능"들에 매우 유용하게 쓰일 기능으로 생각된다.

적어놓고 앞으로도 많이 써야겠다.