[Spring boot] Scheduler와 cron표현식

GyeongEun Kim·2022년 5월 17일
0

이전에 방문자 로그파일을 하루단위로 만들었었는데, 이제 이 파일을 자정마다 읽어들여서 db에 업데이트 하는 것을 해보려고 한다.

Spring Scheduler

스케줄러란, 설정한 시간마다 특정 동작을 하게 하는 기능이다.

스케줄러를 사용하기 위해 (프로젝트명)Application 클래스 위에 @EnableScheduling 애노테이션을 붙여주고,

해당 메서드 위에는 @Scheduled 애노테이션을 붙인다. 괄호안에는 cron식을 작성한다.

나는 자정마다 실행되는것을 원하므로 "0 0 0 * * *"라고 작성하였다.

AlcoholicApplication

@EnableScheduling
public class AlcoholicApplication {
...중략
}

VisitAnalysisService

  @Scheduled(cron = "0 0 0 * * *") //매일 자정
    public void readLogFile () throws IOException {
    	Date d = new Date(); //오늘날짜
        d = new Date(d.getTime()+(1000*60*60*24*-1)); //어제날짜
        SimpleDateFormat yesterday = new SimpleDateFormat("yyyy-MM-dd");

        String filePath = basePath+ yesterday.format(d)+".0.log";
        List<String> lines = Files.readAllLines(Paths.get(filePath),
                StandardCharsets.UTF_8); //어제 날짜의 로그파일 읽어들임
                
                ...중략...
                
    }

Cron식

크론은 6자리로 이루어져 있고, 초 - 분 - 시 - 일 - 월 - 요일 순이다.
ex) * * * * * * //매초 실행

0 0 0/1 * * * //1시간마다 실행

0 0 7 * * * //매일 7시에 실행

profile
내가 보려고 쓰는 글

0개의 댓글