spring-quartz.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
         
         <!-- ############################  批量删除空库存数据    ########################## -->
        <bean id="batchDelEmptyStoreQuantJob" class="com.yundaex.wms.sys.job.TimingBatchDelEmptyStoreQuantJob"></bean>
        <bean id="batchDelEmptyStoreQuantJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="batchDelEmptyStoreQuantJob" />
            <property name="targetMethod" value="doExecute" />
            <property name="concurrent" value="false"/><!-- 此定时任务不会并发,CronTriggerBean任务执行超时,会等到下次执行。quartz采用多线程,其它定时任务不受此定时任务影响-->
        </bean>
        
         <bean id="batchDelEmptyStoreQuantDoTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
             <property name="jobDetail" ref="batchDelEmptyStoreQuantJobTask" />
            <!-- cron表达式 -->
            <property name="cronExpression" value="0 0 02 * * ?" /><!-- 每天凌晨2点执行一次-->
         </bean>
         
          <!-- ############################  批量删除僵化包装台数据    ########################## -->
        <bean id="batchDelZombiePackBenchNoJob" class="com.yundaex.wms.core.alive.job.TimingBatchDelZombiePackBenchNoJob"></bean>
        <bean id="batchDelZombiePackBenchNoJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="batchDelZombiePackBenchNoJob" />
            <property name="targetMethod" value="doExecute" />
            <property name="concurrent" value="false"/><!-- 此定时任务不会并发,SimpleTriggerBean任务执行超时,执行完立即再次执行-->
        </bean>
        
        <bean id="batchDelZombiePackBenchNoDoTime" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
             <property name="jobDetail" ref="batchDelZombiePackBenchNoJobTask" />
             <property name="repeatInterval" value="40000"></property><!-- 每40000毫秒执行一次-->
        </bean>
        
          <!-- ############################  定时处理「待取消」电子面单   ########################## -->
        <bean id="batchCancelElectronOrderJob" class="com.yundaex.wms.sys.job.TimingBatchCancelElectronOrderJob"></bean>
        <bean id="batchCancelElectronOrderJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="batchCancelElectronOrderJob" />
            <property name="targetMethod" value="doExecute" />
            <property name="concurrent" value="false"/>
        </bean>
        
        <bean id="batchCancelElectronOrderDoTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
             <property name="jobDetail" ref="batchCancelElectronOrderJobTask" />
            <!-- cron表达式 -->
            <property name="cronExpression" value="0 0/3 * * * ?" /><!-- 每3分钟执行一次-->
        </bean>
        
        <!-- ############################  发货信息和揽件扫描信息的数据接口job    ########################## -->
        <bean id="deliveryAndPiecesInfoGettingJob" class="com.yundaex.wms.sys.job.DeliveryAndPiecesInfoGettingJob"></bean>
        <bean id="deliveryAndPiecesInfoGettingJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="deliveryAndPiecesInfoGettingJob" />
            <property name="targetMethod" value="doExecute" />
            <property name="concurrent" value="false"/>
        </bean>
        
         <bean id="deliveryAndPiecesInfoGettingJobDoTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
             <property name="jobDetail" ref="deliveryAndPiecesInfoGettingJobTask" />
            <!-- cron表达式 -->
            <property name="cronExpression" value="0 */30 * * * ?" /><!-- 每30分钟执行一次-->
         </bean>
                
         <!-- ############################  定时数据归档    ########################## -->
        <bean id="autoArchiveJob" class="com.yundaex.wms.sys.job.AutoArchiveJob"></bean>
        <bean id="autoArchiveJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="autoArchiveJob" />
            <property name="targetMethod" value="doExecute" />
            <property name="concurrent" value="false"/>
        </bean>
        
         <bean id="autoArchiveDoTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
             <property name="jobDetail" ref="autoArchiveJobTask" />
            <!-- cron表达式 -->
            <property name="cronExpression" value="0 0 03 * * ?" /><!-- 每天凌晨3点执行一次-->
         </bean>
        
        <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
         <bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          <property name="triggers">
                <list>
                    <ref bean="batchDelEmptyStoreQuantDoTime"/>
                    <ref bean="batchDelZombiePackBenchNoDoTime"/>
                    <ref bean="batchCancelElectronOrderDoTime"/>
                    <ref bean="deliveryAndPiecesInfoGettingJobDoTime"/>
                    <ref bean="autoArchiveDoTime"/>
                </list>
            </property>
        </bean>
</beans>
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.yundaex.wms.core.alive.job.handler.BatchDelZombiePackBenchNoHandler;

public class TimingBatchDelZombiePackBenchNoJob {
    
    private static final Logger logger = Logger.getLogger(TimingBatchDelZombiePackBenchNoJob.class);

    @Autowired
    private BatchDelZombiePackBenchNoHandler handler;
    
    public void doExecute() {
        try {
            long startTime = 0L;
            if (logger.isDebugEnabled()){
                startTime = System.currentTimeMillis();
                logger.debug("定时清除僵化包装台任务开始。");
            }
            
            handler.execute();
            
            if (logger.isDebugEnabled()){
                long endTime = System.currentTimeMillis();
                logger.debug("定时清除僵化包装台任务结束,耗时:" + (endTime - startTime) + "毫秒。");
            }
        } catch (Exception e) {
            logger.error("定时清除僵化包装台任务异常。", e);
        }
    }
}
        <!-- TIMER -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>1.8.5</version>
        </dependency>
原文地址:https://www.cnblogs.com/tonggc1668/p/6525241.html