博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot设置定时器类的简单方法
阅读量:4172 次
发布时间:2019-05-26

本文共 3090 字,大约阅读时间需要 10 分钟。

直接上代码:

package com.ismartgo.uqcode.schedule;import java.util.Date;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Lazy;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;import com.ismartgo.uqcode.common.utils.DateUtil;import com.ismartgo.uqcode.mapper.UqcGameMapper;import com.ismartgo.uqcode.mapper.UqcStatsProductDateMapper;import com.ismartgo.uqcode.model.UqcProduct;import com.ismartgo.uqcode.model.UqcStatsProductDate;import com.ismartgo.uqcode.service.ProductService;import com.ismartgo.uqcode.service.StatsProductDateService;@Component@EnableSchedulingpublic class StatsProductDateSchedule {		@Autowired	private UqcStatsProductDateMapper statsProductDateMapper;		@Autowired	private StatsProductDateService statsProductDateService;		@Autowired	private UqcGameMapper gameMapper;		@Autowired	private ProductService productService;		//每天晚上凌晨1点执行,统计上一天的数据	@Scheduled(cron = "0 0 1 * * ?")	public void excute() {		//首先今天零点时间		Date todayDate = DateUtil.getTodayDate();		//然后得到上一天零点时间		Date lastDayDate = DateUtil.getDateAddDay(todayDate, -1);				List
list = gameMapper.getAllsysTenantCode(); for (String sysTenantCode : list) { //根据系统商户编号查询产品列表 UqcProduct product = new UqcProduct(); product.setSysTenantCode(sysTenantCode); List
products = productService.queryList(product); for (UqcProduct p : products) { UqcStatsProductDate statsProductDate = new UqcStatsProductDate(); statsProductDate.setStatsDate(lastDayDate); statsProductDate.setSysTenantCode(sysTenantCode); statsProductDate.setProductId(p.getId()); statsProductDate = statsProductDateService.queryOne(statsProductDate); if(statsProductDate == null) { statsProductDate = new UqcStatsProductDate(); statsProductDate.setStatsDate(lastDayDate); statsProductDate.setSysTenantCode(sysTenantCode); statsProductDate.setProductId(p.getId()); statsProductDate.setJoinQty(statsProductDateMapper.getJoinQtyByDate(lastDayDate, todayDate, p.getId(),sysTenantCode)); statsProductDate.setJoinUserQty(statsProductDateMapper.getJoinUserQtyByDate(lastDayDate, todayDate, p.getId(), sysTenantCode)); statsProductDateService.save(statsProductDate); }else { statsProductDate.setJoinQty(statsProductDateMapper.getJoinQtyByDate(lastDayDate, todayDate, p.getId(),sysTenantCode)); statsProductDate.setJoinUserQty(statsProductDateMapper.getJoinUserQtyByDate(lastDayDate, todayDate, p.getId(), sysTenantCode)); statsProductDateService.update(statsProductDate); } } } }}

在spring boot的项目中,直接在类加入注解@Component,@Configuration,@Lazy(false),@EnableAsync,@EnableScheduling。在方法加上注解@Scheduled(cron = "0 0 1 * * ?")即可。

其中:

       @Component注册为bean

       @EnableScheduling使其装配成定时器

       @Scheduled(cron = "0 0 1 * * ?")为定时器执行的定时规则,这里为每天晚上凌晨1点执行

 

 

转载地址:http://ppbai.baihongyu.com/

你可能感兴趣的文章
Spring MVC中使用Thymeleaf模板引擎
查看>>
深入了解php底层机制
查看>>
XHProf-php轻量级的性能分析工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
[转]C语言printf
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>