티스토리 뷰
1. 스케쥴러(Scheduler)
스케줄러는 일정한 시간마다 또는 일정한 시각에 특정 로직을 실행하기 위해 사용된다.
2. 설정 파일 생성
스케줄러를 구성하기 위해 context-scheduler.xml이라는 별도의 설정 파일을 생성하는 방법을 선택했다.
해당 설정 파일에 스케줄러와 스케줄링 작업에 관한 정보를 정의하면 된다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">
<task:scheduler id="scheduler" pool-size="1"/>
<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="schedulerService" method="setExtApiCheck" cron="0 40 15 * * ?"/>
</task:scheduled-tasks>
</beans>
위 설정에서 task:scheduler는 스케줄러를 정의하고, task:scheduled-tasks는 실행할 스케줄링 작업들을 명시한다.
cron 표현식을 통해 작업의 실행 주기를 정의할 수 있다.
위 task:scheduled 태그 속성 중 ref는 이후에 만들 참조할 서비스 클래스 명을 작성하고, method는 해당 클래스에서 설정한 주기마다 실행할 메서드를 입력하면된다.
- ref : 참조할 서비스 클래스명
- method : 설정한 주기마다 실행될 메서드명
- cron : 작업 실행 주기
크론(cron) 표현식
기본 필드
초 분 시 일 월 요일 [연도(선택)]
필드 값
· 초 (0 ~ 59)
· 분 (0 ~ 59)
· 시 (0 ~ 23)
· 일 (1 ~ 31)
· 월 (1 ~ 12)
· 요일 (1 ~ 7) - 1은 월요일, 7은 일요일
· 연도 (1970 ~ 2099) 선택
각 필드에 입력 가능한 특수문자
· * (별) - 필드에서 적용될 수 있는 모든 값
· ? (물음표) - 주로 일과 요일 필드에서 사용되며 무시를 의미 한다.(아래 추가설명)
· - (하이픈) - 시작값과 끝값 사이의 모든 값
· , (콤마) - 추가적인 값 나열 연산자 or을 생각하면 쉽다.
· / (슬래시) - 시작값과 증가치를 지정한다 예를들어 0/15는 매 시간 시작부터 15분 마다 작업을 실행한다.
?는 일 또는 요일 필드에서 주로 사용되는데 두 필드가 서로 충돌나지 않도록 하기 위해서 사용합니다.
예를들어서 일 필드에 15를 입력했는데 요일 필드에 *(별) 혹은 요일을 지정했다면 스케줄이 예상치 못한 동작을 할 수 있기 때문입니다.
때문에 일 필드에 15와 같은 고정 값을 입력했다면 요일 필드에 ?를 입력해서 해당 스케줄에서 요일 필드는 무시한다고 명시 해줘야합니다.
반대로 요일 필드에 1을 입력해서 월요일 작업을 지정했다면 일 필드에는 ?를 입력해서 일 필드는 무시하도록 명시해주어야 합니다.
아래는 ?에 대한 크론 표현식 예시입니다.
매월 10일만 실행되어야 하는 경우 : 0 0 12 10 * ?
매주 월요일만 실행되어야 하는 경우 : 0 0 12 ? * 1
크론 표현식 생성 사이트
Cron Maker : http://www.cronmaker.com/
2. 스케쥴러(Scheduler) 호출
스케줄러에 의해서 호출될 서비스 클래스를 생성한다.
이 클래스에서는 실제로 스케줄러가 실행할 로직을 작성해주면 된다.
@Service("schedulerService")
public class SchedulerService {
public void setExtApiCheck() {
System.out.println("호출 확인");
}
}
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Intent
- JavaScript
- 코틀린
- 리액트 네이티브
- Session
- closure
- 자바
- Spring
- Android
- Scheduler
- oracle
- 깃
- 오라클
- apply
- useEffect
- 안드로이드
- 스프링
- kotlin
- 깃 플로우 전략
- 시노님
- React-Native
- 인텐트
- Git
- 스케쥴러
- Java
- 세션
- Synonym
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함