주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler
사용자가 뭔가 명령을 내리지 않아도 클래스를 자동 실행하고 싶을 때
사용하는 것이 Sping에 task scheduler 입니다.
몇시간 간격, 몇시부터 몇분간격 등등 주기적인 스케쥴링이 가능하죠.
그럼 사용법을 알아보도록 하겠습니다.
테스트 스펙부터 알아보죠.
[SPEC]
전자정부 프레임워크 3.6 (Spring 4.XX)
JAVA 8
TOMCAT 7
서버 실행 시 일정 간격으로 실행되어야 하는 class 는 구현되었다고 가정하겠습니다.
저의 경우에는 OpenAPI 로 특정 데이터를 받아 주기적으로 DB에 저장하는 클래스를 생성했습니다.
이제 본론으로 들어가서,
dispatcher-servlet.xml 을 열어주세요.
dispatcher-servlet.xml 을 열었으면 Namespaces 탭으로 이동합니다.
스케쥴링에 사용될 namespace는 task 입니다. 이것을 체크해서 추가해주세요.
그럼 다시 Source 탭으로 이동해서 task가 추가되었는지 확인합니다.
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation=http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
xsi:schemaLocation 은 여러개가 사용중일 것이니 위의 내용이 있는지만 확인해주세요.
추가가 되었다면 이제 task 기능을 사용할 수 있습니다.
<bean id="batchExcuetor" class="egovframework.geon.citsts.collect.web.ScheduledJob" />
이제 주기적으로 실행할 클래스를 <bean>태그로 등록합니다. 그래야 메모리 상에 등록이 되고 사용이 가능하겠죠.
<task:scheduler id="taskScheduler" pool-size="10" />
<task:scheduled ref="batchExcuetor" method="getData" cron="0 0/3 * * * *" />
</task:scheduled-tasks>
그 후 위와 같이 task scheduler를 등록합니다.
taskScheduler 라는 id의 scheduler를 등록하고
위에서 등록한 batchExcuetor라는 클래스를 참조해
그 내에 있는 getData Method를 3분 간격으로 실행하겠다.
라는 의미 입니다.
다른 부분은 간단하니 넘어가도록 하고
시간 설정 하는 부분을 보도록 하죠.
예를들어 설명하겠습니다.
cron property를 보시면 "초 분 시 일 월 년" 으로 구성됩니다.
만약 매일 12시에 실행하겠다 한다면
cron="0 0 12 * * *"
12시간 마다 실행하겠다라면
cron="0 0 0/12 * * *"
이 됩니다.
매일 12시부터 시작해서 5분 간격으로 한다면
cron="0 0/5 12 * * *"
이런식으로 하시면 됩니다.
'Programing > Spring' 카테고리의 다른 글
톰캣 에러/경고 메지 관련 (0) | 2018.02.12 |
---|---|
mybatis selectkey 사용법 생성한 키값 리턴받기. (0) | 2018.01.22 |
JAVA Class -> JSON, XML 변환 출력 jaxb marshalling 마샬링 작스비 (0) | 2017.10.26 |
iBatis, myBatis 동적 태그 비교 정리 Dynamic SQL (0) | 2017.08.30 |
Spring Interceptor 활용 세션 설정 인터셉터 세션설정 ajax, 페이지연결 구분 (0) | 2017.03.31 |
댓글