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 > |
댓글 없음:
댓글 쓰기