Programing/Spring

주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 JAVA Spring task scheduler

리커니 2017. 11. 3. 15:13
반응형

 

주기적 클래스 실행하는 방법 자동실행 일정간격 스케쥴링 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가 추가되었는지 확인합니다.

 

 

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 * * *"

 

이런식으로 하시면 됩니다.

 

반응형