在SpringBoot项目中,我们可以很优雅的使用注解来实现定时任务
在主类上使用@EnableScheduling注解开启对定时任务的支持,然后启动项目
@Scheduled(cron="0 0/2 * * * ?") //每2分钟执行一次
public void statusCheck() {
//检查redis里面 key=imageList剩余的生存时间
long remainingTime = redisTemplate.getExpire("imageList", TimeUnit.MILLISECONDS);
//如果剩余时间小于5分钟 重新生成图片
if(remainingTime<cacheExistTimeHalf){
//logger.info("重新生成图片。开始……");
List<ImageAttributes> imageList = CommonMethodUtil.createImgList(imgSourcePath, imgTempPath);
//删除缓存 key=imageList
redisService.remove("imageList");
//维护图像属性的list放缓存
redisService.putObject("imageList", imageList,cacheExistTime);
//删除旧的图片
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); //yyyy-MM-dd HH:mm
String date=sdf.format(new Date());
int num = CommonMethodUtil.deleteFileDate(date,imgTempPath+File.separator);
}
}