-
spring boot: 스케줄링Spring Boot 🍃 2023. 12. 2. 00:01
@Scheduled
Scheduled 어노테이션 사용으로 ,
이 어노테이션을 이용하여 스케줄링 프로그램을 작성할 수 있다.
@Scheduled 어노테이션은 cron 표현식의 String 문자열을 인자로 받아서 동작한다.
@Scheduled 어노테이션을 사용하기 위해서는
Application 클래스에
@EnableScheduling
어노테이션을 붙여주어야 한다.cron 표현식
리눅스 및 유닉스 기반 운영 체제에서 스케줄 작업을 지정하는 데 사용되는 표현식.
cron 표현식 구성
초 분 시 일 월 요일
초 (0-59) 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일 (0-7, 일요일=0 또는 7)
사용 될 수 있는 기호
*
: 모든 값.,
: 값의 리스트. 쉼표로 구분된 여러 값을 지정할 수 있다.-
: 범위. 시작 값과 끝 값을 지정하여 범위를 나타낼 수 있다./
: 간격. 시작 값부터 주어진 간격으로 값을 지정할 수 있다.?
: 특정 값 없음. 일 또는 요일 필드에서만 사용된다. " 해당 필드에 대해 특정한 값이 없음 "을 나타낸다.L
: 마지막 값. 일 또는 요일 필드에서만 사용된다. " 해당 필드의 마지막 값을 나타냄 "을 의미W
: 가장 가까운 평일. 일 필드에서만 사용된다. " 가장 가까운 평일(월-금)을 나타냄 "을 의미#
: 주차. 일 필드에서만 사용된다. " 해당 월의 몇 번째 주의 요일 "을 지정사용 예시
@Scheduled(cron = "0 0 12 * * ?") // 매일 정오(12시)에 실행 @Scheduled(cron = "0 15 10 ? * MON-FRI") // 평일(월요일부터 금요일) 오전 10시 15분에 실행 @Scheduled(cron = "0 0/5 14,18 * * ?") // 매일 오후 2시부터 6시까지 5분마다 실행 @Scheduled(cron = "0 0 23 ? * SUN#2") // 매월 두 번째 일요일 밤 11시에 실행
fixedDelay
이전의 수행이 종료된 시점을 기준으로 일정 시간이 지난 후 새로운 작업을 수행
fixedRate
이전의 수행이 시작된 시점을 기준으로 일정 시간이 지난 후 새로운 작업을 수행
fixedRate는 작업에 소요되는 수행 시간이 fixedRate에서 지정된 시간보다 길어진다면 두 수행이 겹쳐서 발생할 가능성이 있기 때문에 fixedRate로 스케줄링을 수행하게 된다면 해당 이슈가 발생할 수 있다는 가능성을 염두에 두고 스케줄링을 해야한다.
'Spring Boot 🍃' 카테고리의 다른 글
MyBatis (0) 2023.12.03 application.yml 파일에 속성 파일 추가 (0) 2023.12.03 트랜잭션 transaction (0) 2023.12.02 controller에서 날짜 입력 받을때 형식 지정 (0) 2023.12.02 spring boot 프로젝트 git 업로드 시, API key 및 DB 접속정보 숨기기 (0) 2023.12.02