본문 바로가기
programming/SpringJava

자바 스프링 스케줄링 크론을 이용한 매일 특정 시간 로직 자동화 하기 java spring cron

by 개코 - 개발과 코딩 2021. 6. 24.

자바 스프링에서 크론을 이용하면 내가 원하는 시간대에 로직을 실행시킬 수 있다. 프로그램을 자동화하는 이유는 여러가지가 있지만 그 중 크론이 가장 편한 것이 있다. 특정 시간에 로직을 자동화하면 기초 데이터를 구성하는데 도움이 된다.

자바 스프링 매일 1시 크론 표현식

 

자바 스프링 자동화를 위한 크론 cron

크론 ( cron )을 이용하는 것으로 로직을 자동화할 수 있다.

단점이라면 크론을 이용한 메서드는 파라미터를 받을 수도 없고 리턴값도 없어야 한다.

throws 도 되지 않는다.

왜 그런것인지 자세한 내용은 찾아보지 않았지만, 에러나는 부분을 찾아봤을 때 그랬다.

하지만, 크론을 이용한 메서드에서 다른 메서드를 호출할 때는 보통의 방법으로 사용하면 가능하다.

어쨌든

매일매일 특정 시간에 데이터를 재구성하기 위한 스케쥴링을 하기 위한 방법으로 크론을 사용하는 것은 요긴하게 사용할 수 있다.

 

설정방법은 이전에 작성한 포스팅을 참고하자

▶ 자바 스프링 스케줄러 구현과 실행 cron 표현식 사용

 

매일 특정시간에 동작할 크론 정하기

웹사이트를 만들었다면 사람들이 많이 사용하지 않는 시간대가 있다.

( 이런 고민을 해봤음 좋겠다. )

보통 새벽시간대

블로그를 자주 하는 사람들에 물어보면 보통 새벽 4시정도면 다들 취침한다고 한다.

그렇기에 시스템을 업데이트하거나 데이터를 재구성해야 하는 시간대가 보통 새벽시간대임을 생각하면 관계가 있다.

 

어쨌든

매일 새벽 1시 2시 3시에 자바 스프링으로 특정 로직을 실행하려면 아래와 같이 하면 된다.

/** 매일 새벽 1시 */
@Scheduled(cron ="0 0 01 * * ?")

/** 매일 새벽 2시 */
@Scheduled(cron ="0 0 02 * * ?")

/** 매일 새벽 3시 */
@Scheduled(cron ="0 0 03 * * ?")

/** 매일 오전 6시 */
@Scheduled(cron ="0 0 06 * * ?")

/** 매일 오전 9시 */
@Scheduled(cron ="0 0 09 * * ?")

/** 매일 오후 3시 */
@Scheduled(cron ="0 0 15 * * ?")

/** 매일 오후 6시 */
@Scheduled(cron ="0 0 18 * * ?")

대충 느낌 오는 것을 알 수 있다.

코드로 만들어 보자.

매일 아침 5시에 데이터를 재구성하는 메서드를 실행하는 자동화 코드는 다음과 같다.

@Scheduled(cron ="0 0 05 * * ?")
public void ScheduleTest() {
	
	Date date = new Date();
	DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
	
	String formattedDate = dateFormat.format(date);
	
	logger.info("ScheduleTest" + formattedDate);
	
}

크론 표현식에서 숫자가 입력된느 의미는 다음과 같다/

시간대가 오름차순으로 기입하면 되며, 연도는 생략 가능하다.

cron ="초 분 시 일 월 요일 (연도)"
반응형

댓글