一、springmvc.xml中添加以下配置
1、beans添加xmlnx:task
xmlns:task="http://www.springframework.org/schema/task"
2、xsi:schemaLocation中添加
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.1.xsd
3、核心配置
(1)方法一:
说明:理论上只需要加上这句配置就可以了,这些参数都不是必须的(见方法二)。
(2)方法二
二、定时任务Java代码
(1)接口和实现类
packagecom.qiyuan.listener;public interfaceTest {public voidmyTest1();public voidmyTest2();public voidmyTest3();public voidmyTest4();
}
packagecom.qiyuan.listener;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.annotation.Resource;importorg.springframework.scheduling.annotation.Scheduled;importorg.springframework.stereotype.Component;importcom.qiyuan.bean.TRate;importcom.qiyuan.service.AnalysticService;importcom.qiyuan.service.CenterPurseService;importcom.qiyuan.service.OrderService;importcom.qiyuan.service.RateService;importcom.qiyuan.util.RateUtil;
@Componentpublic class TestImp implementsTest {
@ResourceprivateRateService rateServiceImp;
@ResourceprivateCenterPurseService centerPurseServiceImp;
@ResourceprivateOrderService orderServiceImp;
@ResourceprivateAnalysticService analysticServiceImp;int count1 = 0;int count2 = 0;int count3 = 0;int count4 = 0;
@Scheduled(cron="0 */5 * * * ?") //每5分钟执行一次
@Overridepublic voidmyTest1() {
System.out.println("进入测试定时器1");++count1;
System.out.println("定时器1:时间=" + new Date() + " 执行了" + count1 + "次"); //1次//查询各种币的汇率
TRate tRate=newTRate();
tRate.setRate(1);
tRate.setYkcrate(RateUtil.YKC());
tRate.setBtcrate(RateUtil.BTC());
tRate.setLtcrate(RateUtil.LTC());
tRate.setEthrate(RateUtil.ETH());
tRate.setLastmodify(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(newDate()));
System.out.println("==========汇率"+tRate);//更新汇率表
rateServiceImp.updateRate(tRate);//查询钱包充值记录,更新用户钱包
centerPurseServiceImp.searchPurseChargeRecord();
}
@Scheduled(cron="0 0 2 * * ?") //每天凌晨一点执行一次
@Overridepublic voidmyTest2() {
System.out.println("进入测试定时器2");++count2;
System.out.println("定时器2:时间=" + new Date() + " 执行了" + count2 + "次"); //1次//每天凌晨1点:超过7天已发货但未收货的让系统自动收货
orderServiceImp.autoAcceptOrder();
}
@Scheduled(cron="0 0 2 * * ?") //每天凌晨两点执行一次
@Overridepublic voidmyTest3() {
System.out.println("进入测试定时器3");++count3;
System.out.println("定时器3:时间=" + new Date() + " 执行了" + count3 + "次"); //1次//每天凌晨1点统计前一天的数据
analysticServiceImp.insertAnalystic();
}
@Scheduled(cron= "0 0 3 1 * ?") //每个月1号凌晨三点执行一次
public voidmyTest4(){
System.out.println("进入测试定时器4");++count4;
System.out.println("定时器3:时间=" + new Date() + " 执行了" + count4 + "次"); //1次//每个月1号凌晨三点清空临时订单表的数据
orderServiceImp.deleteAllTempOrder();
}
}
三、扩展资料
关于@Scheduled注解,查看源文件中该注解的定义
@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documentedpublic @interfaceScheduled
{public abstractString cron();public abstract longfixedDelay();public abstract longfixedRate();
}
参数具体介绍见:
(1)理解 Spring 定时任务的 fixedRate 和 fixedDelay 的区别
(2)