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 | <beanid="simpleTrigger"class="org.springframework.scheduling.quartz.SimpleTriggerBean"> | 
| 2 |     <propertyname="jobDetail"ref="jobDetail"/> | 
| 3 |     <propertyname="startDelay"value="30000"/> | 
| 4 |     <propertyname="repeatInterval"value="30000"/> | 
| 5 | </bean> | 
+ org.springframework.scheduling.quartz.CronTriggerBean
: 다양한 시간간격을 지정할수 있다. (매일, 매주, 심시어 요일별로 지정할 수 있다)
표현식 -> http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html
| 1 | <beanid="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"> | 
| 2 |     <propertyname="jobDetail"ref="jobDetail"/> | 
| 3 |     <propertyname="cronExpression"value="0/30 * * * * ?"/> | 
| 4 | </bean> | 
- 실행시킬 작업(Job)을 정의하는 클래스
+ org.springframework.scheduling.quartz.JobDetailBean
: org.springframework.scheduling.quartz.QuartzJobBean을 상속받아 executeInternal(JobExecutionContext) 메소드를 구현하면 된다.
| 1 | <beanname="jobDetail"class="org.springframework.scheduling.quartz.JobDetailBean"> | 
| 2 |     <propertyname="jobClass"value="kr.kangwoo.postman.XxxJob"/> | 
| 3 |     <propertyname="jobDataAsMap"> | 
| 4 |         <map> | 
| 5 |             <entrykey="timeout"value="30000"/> | 
| 6 |         </map> | 
| 7 |     </property> | 
| 8 | </bean> | 
+ org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
: 지정한 Bean의 대상 메소드를 실행시켜준다.
| 1 | <beanid="jobDetail"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> | 
| 2 |     <propertyname="targetObject"ref="postManJob"/> | 
| 3 |     <propertyname="targetMethod"value="run"/> | 
| 4 |     <propertyname="concurrent"value="false"/> <!-- job이 동시에 여러개 실행될지 여부를 지정하는것이다. --> | 
| 5 | </bean> | 
- 스케줄러를 지정해 주면, spring이 초기화되면서 자동으로 작동을 한다. triggers란 이름의 속성에 작동시킬 Trigger들을 넣어주면 된다.
| 1 | <beanid="scheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> | 
| 2 |     <propertyname="triggers"> | 
| 3 |         <list> | 
| 4 |             <reflocal="simpleTrigger"/> | 
| 5 |             <reflocal="cronTrigger"/> | 
| 6 |         </list> | 
| 7 |     </property> | 
| 8 | </bean> | 
댓글 없음:
댓글 쓰기