quart任务调度框架实战

来源:互联网 发布:mac输入人民币符号 编辑:程序博客网 时间:2024/06/03 05:38

需求:自动关闭2天前的订单


定时执行的任务bean 

package com.taotao.store.order.job;import org.joda.time.DateTime;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.context.ApplicationContext;import org.springframework.scheduling.quartz.QuartzJobBean;import com.taotao.store.order.mapper.OrderMapper;/** * 扫描超过2天未付款的订单关闭 */public class PaymentOrderJob extends QuartzJobBean {    @Override    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {        ApplicationContext applicationContext = (ApplicationContext) context.getJobDetail().getJobDataMap()                .get("applicationContext");        //时间参数,当前时间向前推2天        applicationContext.getBean(OrderMapper.class).paymentOrderScan(new DateTime().minusDays(2).toDate());    }}



配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"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-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- 定义任务bean --><bean name="paymentOrderJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><!-- 指定具体的job类 --><property name="jobClass" value="com.taotao.store.order.job.PaymentOrderJob" /><!-- 指定job的名称 --><property name="name" value="paymentOrder" /><!-- 指定job的分组 --><property name="group" value="Order" /><!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中删除该任务  --><property name="durability" value="true"/><!-- 指定spring容器的key,如果不设定在job中的jobmap中是获取不到spring容器的 --><property name="applicationContextJobDataKey" value="applicationContext"/></bean><!-- 定义触发器 --><bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="paymentOrderJobDetail" /><!-- 每一分钟执行一次 --><property name="cronExpression" value="0 0/1 * * * ?" /></bean><!-- 定义调度器 --><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">    <property name="triggers">        <list>            <ref bean="cronTrigger" />        </list>    </property></bean></beans>



0 0