1. 관련 라이브러리
- 갑자기 라이브러리가 많이 필요해졌다. 대충 정리하면 아래와 같은데, 알아서 구해보시길. ^^;
- spring 2.5.6 (http://www.springsource.org/download)
- iBatis 2.3.4 (http://ibatis.apache.org/javadownloads.cgi)
- commons-dbcp 1.2.2 (http://commons.apache.org/dbcp/downloads.html)
- commons-pool 1.4 (http://commons.apache.org/pool/downloads.html)
- commons-collections(http://commons.apache.org/downloads/download_collections.cgi)
- JDBC Driver (http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html)
2. Quartz Scheduler(http://www.opensymphony.com/quartz/)
- 원래 의도는 Timer를 사용해서 간단한 스케줄러 기능을 구현하려고 했지만, 멋(?)을 위해 Quartz Scheduler를 사용하도록 하겠다.
- Quartz는 다양한 시간간격에 의한 수행과 사용자 정의에 의한 수행을 모두 구현할 수 있다.
- spring에서는 quartz 연동 클래스를 제공해 준다.
- 발동(?) 클래스
+ org.springframework.scheduling.quartz.SimpleTriggerBean
: 반복 시간을 지정할수 있다.
1 | <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> |
2 | <property name="jobDetail" ref="jobDetail" /> |
3 | <property name="startDelay" value="30000" /> |
4 | <property name="repeatInterval" value="30000" /> |
5 | </bean> |
+ org.springframework.scheduling.quartz.CronTriggerBean
: 다양한 시간간격을 지정할수 있다. (매일, 매주, 심시어 요일별로 지정할 수 있다)
표현식 -> http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html
1 | <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> |
2 | <property name="jobDetail" ref="jobDetail" /> |
3 | <property name="cronExpression" value="0/30 * * * * ?" /> |
4 | </bean> |
- 실행시킬 작업(Job)을 정의하는 클래스
+ org.springframework.scheduling.quartz.JobDetailBean
: org.springframework.scheduling.quartz.QuartzJobBean을 상속받아 executeInternal(JobExecutionContext) 메소드를 구현하면 된다.
1 | <bean name="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> |
2 | <property name="jobClass" value="kr.kangwoo.postman.XxxJob" /> |
3 | <property name="jobDataAsMap"> |
4 | <map> |
5 | <entry key="timeout" value="30000" /> |
6 | </map> |
7 | </property> |
8 | </bean> |
+ org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
: 지정한 Bean의 대상 메소드를 실행시켜준다.
1 | <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> |
2 | <property name="targetObject" ref="postManJob" /> |
3 | <property name="targetMethod" value="run" /> |
4 | <property name="concurrent" value="false" /> <!-- job이 동시에 여러개 실행될지 여부를 지정하는것이다. --> |
5 | </bean> |
- 스케줄러를 지정해 주면, spring이 초기화되면서 자동으로 작동을 한다. triggers란 이름의 속성에 작동시킬 Trigger들을 넣어주면 된다.
1 | <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> |
2 | <property name="triggers"> |
3 | <list> |
4 | <ref local="simpleTrigger"/> |
5 | <ref local="cronTrigger"/> |
6 | </list> |
7 | </property> |
8 | </bean> |
댓글 없음:
댓글 쓰기