1. 程式人生 > >spring配置quartz定時器任務

spring配置quartz定時器任務

解決方案:

將CronTriggerBean修改為CronTriggerFactoryBean。如下所示:

<!-- 配置觸發器 -->
  <bean id="testQuartzJobTrigger"  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <!-- 每天下午14點30執行一次 -->
        <property name="jobDetail" ref="job1" />
        <property name="cronExpression">  
            <value>0 30 14 * * ?</value>  
        </property>  
   </bean>

注意:

由於Quartz 2.x修改了部分API,所以需要修改一下Quartz的配置。大體來說很簡單,如下:

1)升級Spring的jar包

2)升級Quartz的jar包

3)修改配置

  • 將CronTriggerBean修改為CronTriggerFactoryBean
  • 將JobDetailBean修改為JobDetailFactoryBean
全部的配置檔案如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  
 <!-- 配置作業類 -->
 <bean id="job1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 <property name="targetObject">
  <bean class="com.cloudpro.cloud.liantong.CloudMachineService" />
 </property>
 <property name="targetMethod" value="closeAllExpiredCloudMachine" />
 <property name="concurrent" value="false"> </property>
 </bean>
 
 <!-- 配置觸發器 -->
  <bean id="testQuartzJobTrigger"  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <!-- 每天凌晨12點執行一次 -->
        <property name="jobDetail" ref="job1" />
        <property name="cronExpression">  
            <value>0 30 14 * * ?</value>  
        </property>  
   </bean>
  
<!-- 配置排程工廠 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
	<ref bean="testQuartzJobTrigger" />
</list>
</property>
</bean>

</beans>