SpingBoot 使用@Scheduled实现一个定时清理任务
使用番茄工作法时,设定一个清晰的任务清单。 #生活常识# #时间管理建议# #番茄工作法#
实现定时任务的方法有很多种,@Scheduled注解,scheduleAtFixedRate,timer,quartz等等。
我选择了@Scheduled,相对而言,可以让任务定点执行,并且比较简单。
首先在主类添加注解 @EnableScheduling ,使Scheduled可用。
之后新建一个定时清理类,并实现该类的定时清理方法,在定时清理方法前加上@Scheduled的注解以及corn表达式,corn表达式规定了定时任务的启动时间。以我下文为例,@Scheduled(cron = "0 0 0 * * ?")表示定时任务在每天0点启动,你可以通过 http://cron.qqe2.com/来获取你想要的cron表达式。
以上(加粗&下划线),就是利用@Scheduled实现定时清理任务的方法,很简单吧。如下是我实现的例子,有兴趣可以看一下。
我实现了一个 对于每个No. 如果它在数据库中记录超过50条,那么就进行清理的 定时任务。
首先从表中获取了No.们以及他们出现的次数,由于是使用mybatis进行获取,所以返回了一个map list,对他处理了一下,获得每个No.以及他们出现的次数count,判断若大于50,则清理50以外的部分。
package com.test.service;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.test.dao.ChangeLogDao;
@Component
public class TimeCleaning
{
@Autowired
private ChangeLogDao ChangeLogDao;
private static final int MAXCOUNT = 50;
@Scheduled(cron = "0 0 0 * * ?")
public void timeCleaning()
{
List<Map<String, Object>> NoCountList = ChangeLogDao.getNoCount();
String No = null;
int Count = 0;
for(Map<String, Object> mapListItem:NoCountList)
{
for(Map.Entry<String, Object> entry:mapListItem.entrySet())
{
if ("COUNT1".equals(entry.getKey()))
{
Count = Integer.parseInt(String.valueOf(entry.getValue()));
}
else if ("caseNo".equals(entry.getKey()))
{
No = String.valueOf(entry.getValue());
}
}
if (Count > MAXCOUNT)
{
ChangeLogDao.delResultChangeLog(No, Count - MAXCOUNT);
}
}
}
}
public List<Map<String, Object>> getNoCount();
public void delResultChangeLog(@Param(value = "No") String No,
@Param(value = "deleteCount") int deleteCount);
网址:SpingBoot 使用@Scheduled实现一个定时清理任务 https://www.yuejiaxmz.com/news/view/271031
相关内容
使用Spring@Scheduled(cron = “0 0/10 * * * ?”) 实现定时任务Python定时任务,三步实现自动化
利用Python+Flask实现一个TODO任务管理系统网站
Python怎么实现定时任务?python自动化定时方法
使用Redux Toolkit打造任务清单应用实战指南
基于Python+Flask实现一个TODO任务管理系统网站
AppTask: 使用Python实现日常APP任务自动化
如何使用Python实现日常任务的自动化
任务管理的重要性和如何实现高效任务管理?
jbpm的任务管理实现