2017년 2월 1일 수요일

[spring] @Scheduled 로 이번달의 마지막 일자에 실행하기가 안될때

Spring 에서 @Scheduled 어노테이션 사용시 해당월의 마지막에 실행하려고
'L' 문자를 사용하려고 하면 에러가 발생한다.

그래서 매일 실행 하면서 java에서 마지막 날을 확인해서 실행 하는 방식으로 처리 하였다.

@Scheduled(cron="1 0 0 * * *")
private void SchedulerEndDayOfMonth() {
  
    Calendar cal = Calendar.getInstance();
    // 오늘이 월의 마지막 일인지 확인
    boolean isLastDay = cal.get(Calendar.DATE) == cal.getActualMaximum(Calendar.DATE);
 
    if(isLastDay) {
        // 실행 내용 
    }
}