-
프로젝트를 진행하던 중 특정 시간마다 동작하는 그런 로직이 필요해서 관련 정보를 찾던 중 스프링 부트에서 어노테이션으로 사용 가능한 것을 알고 한번 사용해 보았다.
사용 방법은 간단했으며 크론식을 알고 있다면 더욱 편리하게 상용 가능하다.
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@EnableSchedulingpublic 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 등록
@RestControllerpublic 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