java定时器 spring_Spring注解方式实现定时器

一、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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值