-
프로젝트를 진행하던 중 특정 시간마다 동작하는 그런 로직이 필요해서 관련 정보를 찾던 중 스프링 부트에서 어노테이션으로 사용 가능한 것을 알고 한번 사용해 보았다.
사용 방법은 간단했으며 크론식을 알고 있다면 더욱 편리하게 상용 가능하다.
1. @Scheduled 어노테이션을 활성화
package com.ssafy.FFP; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class FfpApplication { public static final String APPLICATION_LOCATIONS = "spring.config.location=" + "classpath:application.properties," + "classpath:security.yml"; public static void main(String[] args) { new SpringApplicationBuilder(FfpApplication.class) .properties(APPLICATION_LOCATIONS) .run(args); } }
위와 같은 @SpringBootApplication 어노테이션이 선언된 곳에 @EnableScheduling 어노테이션을 추가해 주면 스케줄링 기능을 활성화시킬 수 있다.
2. @Scheduled 등록
@RestController public class DatasetController { @Scheduled(cron = "0 0 4 * * *",zone = "Asia/Seoul") public void DatasetUpdate() { // 최근 4달 데이터 가져와서 새로 갱신하는 방식 System.out.println(Service.DataUpdate()); } @Scheduled(cron = "0 0 0/1 * * *",zone = "Asia/Seoul") public void Datasetadd() { // 실시간 데이터 추가 Service.DataAdd(); } @Scheduled(cron = "0 0 5 * * *",zone = "Asia/Seoul") public void AnalysisUpdate2() { AService.updateChartDB(); } }
위와 같이 사용하고 싶은 메서드 위에 @Scheduled 어노테이션을 추가하면 스케줄 등록이 되고 설정된 시간에 맞춰 실행한다.
3. @Scheduled 옵션
fixedDelay 이전 작업이 종료된 후 설정 시간만큼 기다린 후에 시작한다. (밀리세컨드)
@Scheduled(fixedDelay = 1000)fixedRate 이전 작업이 종료되지 않아도 설정된 시간마다 시작한다. (밀리세컨드)
@Scheduled(fixedRate = 1000)initialDelay 작업 시작 시, 설정된 시간만큼 기다린 후 시작한다. (밀리세컨드)
@Scheduled(fixedRate = 1000, initialDelay = 2000)cron 원하는 시간대를 설정하여 작업을 실행한다.
@Scheduled(cron = "* * * * * *")
(초(0-59), 분(0-59), 시간(0-23), 일(1-31), 월(1-12), 요일(1-7, 1:일, 7:토))zone 시간대를 설정 한다. 미설정 시 로컬 시간대가 적용된다.
@Scheduled(cron = "* * * * * *", zone = "Asia/Seoul")728x90'공부 > BackEnd' 카테고리의 다른 글
Spring Boot Spark Kmeans 알고리즘 사용법 (0) 2022.06.07 Spring Boot Web Socket 실시간 알림 (0) 2022.02.21 Spring Boot 복잡한 JSON 파싱 (0) 2022.02.13 댓글