quartz是一個任務調度框架,可以用它來實現一些需要定時執行的任務。
本次實現的是spring配置整合quartz
1.配置如下:目標bean和bean中的方法需要自己定義,這個方法就是要執行的job(定時執行)
<!--使用MethodInvokingJobDetailFactoryBean,任務類可以不實現Job接口,通過targetMethod指定調用方法-->
<!-- 定義目標bean和bean中的方法 -->
<bean id="SpringQtzJob" class="cn.thinkjoy.LawDataForExcel.quartz.QuartzApplication"/>
<bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" lazy-init="true">
<property name="targetObject">
<ref bean="SpringQtzJob"/>
</property>
<property name="targetMethod">
<value>execute</value>
</property>
<!-- 同一任務在前一次執行未完成而Trigger時間又到時是否併發開始新的執行, 默認爲true. -->
<property name="concurrent" value="false"/>
</bean>
<!--調度觸發器
克隆表達式可以包括7個字段:秒、分、小時、月內日期、月、周內日期、年(可選字段)
每天下午5點半執行一次
0 30 17 * * ? * 0 */1 * * * ?
-->
<bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="SpringQtzJobMethod"/>
<property name="cronExpression" value="0 30 17 * * ? *"/>
</bean>
<!--調度工廠-->
<bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="CronTriggerBean"/>
</list>
</property>
</bean>
在main方法裏調用
ApplicationContext context = new
ClassPathXmlApplicationContext("classpath*:spring/spring.xml");
Scheduler scheduler= (StdScheduler) context.getBean("SpringJobSchedulerFactoryBean");
scheduler.start();