매일 또는 일정한 간격을 가지고 동작을 해야 하는 기능이 있을 때 사용
Project Application Class
@EnableScheduling // Scheduler 를 사용하기 위한 어노테이션
@SpringBootApplication
public class PracticeApplication {
public static void main(String[] args) {
SpringApplication.run(PracticeApplication.class, args);
}
}
TestScheduler
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@Component
public class TestScheduler {
// 프로젝트가 시작되면 initialDelay 가 1초 뒤에 실행되고 그 뒤로 3초마다 fixedDelay 가 실행된다
@Scheduled(fixedDelay = 3000 , initialDelay = 1000)
public void test() throws Exception{
LocalDateTime now = LocalDateTime.now();
String formatter = now.format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm뷴 ss초"));
System.err.println("스캐줄러 테스트 : "+formatter);
}
}
실행
Cron(크론) 표현식
@Scheduled(cron = "* * * * * *")
public void test() throws Exception{
..
..
..
* * * * * * *
초 분 시 일 월 요일 년도(생략가능)
<!-- 매 시간 5분 마다 실행 예) 00:05, 00:10. 00:15.... -->
cron = "0 5 * * * *"
<!-- 5분 마다 실행 예) 00:08, 00:13. 00:18.... -->
cron = "0 0/5 * * * *"
<!-- 매 시간 45분 마다 실행 예) 01:45, 02:45. 03:45.... -->
cron = " 0 10 * * * * " // 매 시간 45분마다
<!-- 45분 마다 실행 예) 00:45, 01:30, 02:15.... -->
cron = " 0 /10 * * * * " // 45분 마다
<!-- 1시간 마다 실행 예) 01:00, 02:00, 03:00.... -->
cron = "0 0 0/1 * * *"
<!-- 매일 오후 15시마다 실행 예) 15:00 -->
cron = "0 0 15 * * *"
<!-- 2023년도만 매일 오전 01시마다 실행 예) 01:00 -->
cron = "0 0 1 * * * 2023"
<!-- 매일 18시00분-18시55분 사이에 5분 간격으로 실행 예) 18:00, 18:05.....18:55 -->
cron = "0 0/5 18 * * *"
<!-- 매달 1일 00시에 실행 -->
cron = "0 0 0 1 * *"
Scheduler 는 중간에 실행시키고 중지시키는 게 안 되는 건가 싶어서
Thread를 사용해야 하나 싶었는데 가능하다고 한다
다음엔 수동제어를 방법을 올려야겠다
'개발 > Spring' 카테고리의 다른 글
[SpringBoot] DataTable(JavaScript) - 적용하기 (0) | 2024.05.05 |
---|---|
[SpringBoot] Thymeleaf - layout 적용하기 (0) | 2024.04.21 |
[EClipse] 이클립스 설치하기 (0) | 2023.05.02 |
[SpringBoot] SecurityConfig + JWT - SecurityConfig 설정 (0) | 2023.04.27 |
[SpringBoot] Session을 이용한 로그인 , 인증 하기 (0) | 2023.04.26 |
댓글