spring配置quartz定時器任務
阿新 • • 發佈:2019-02-07
解決方案:
將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>