스케쥴링은 일련의 반복되는 행위를 자동으로 간편하게 작성할수 있다.
예를들면 리눅스 시스템의 cron 처럼.
스케쥴 기능 켜기
자바 설정에서 @EnableScheduling 추가하면 스케쥴 기능을 사용할수 있다.
main class 에 추가하자.
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
스케쥴 구현
@Scheduled 어노테이션을 사용하면 사용가능하며
실행주기는 cron, fixedDelay, fixedRate 라는 세개의 속성으로 지정할 수 있다.
cron 설정
* * * * * *
초(0-59) 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
각 별 위치에 따라 주기를 다르게 설정 할 수 있다.
순서대로 초-분-시간-일-월-요일 순이다. 그리고 괄호 안의 숫자 범위 내로 별 대신 입력 할 수도 있다.
요일에서 0과 7은 일요일이며, 1부터 월요일이고 6이 토요일이다.
예)
매일 9시에 실행
0 * 9 * * *
2분마다 실행
00 */2 * * * *
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class Scheduler {
@Scheduled(cron = "0 * 9 * * *")
public void cronJobSch() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Java cron job expression:: " + strDate);
}
}
참고
application.properties 변수로 설정하고 싶으면 아래와 같이 한다.
@Scheduled(cron = "${test.schedule}")
public void cronTest() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Java cron job expression:: " + strDate);
}
기타
위 샘플 예제에서는 파라메타가 없다.
스케쥴러 사용할때에는 파라메타 없어야 한다고 한다.
'프로그래밍 > Java' 카테고리의 다른 글
스프링 어노테이션 @Autowired 기본개념 (0) | 2022.01.20 |
---|---|
mac java17 인텔리제이 자동 리로드 devtools 안될때 (0) | 2022.01.14 |
spring boot application.properties 운영/개발 설정하기 (0) | 2022.01.10 |
java spring boot db 연결시 java.lang.NullPointerException: null 발생할때 (0) | 2021.12.13 |
Log4j2 취약점 해결 : 보안 업데이트 (0) | 2021.12.13 |