一、Spring Task基本使用
Spring Task是Spring框架中的一个任务调度工具,可以设置相应的时间来执行你想实现的业务。
1、配置@EnableScheduling开启定时任务。
@EnableScheduling //开启任务调度,使用SpringTask public class MovieApplication { 。。。 }
2、创建自己所需要的定时任务类
@Component //加入Spring容器 @Slf4j public class MyTask { //定时任务 每隔5秒触发一次 @Scheduled(cron = "0/5 * * * * ?") public void executeTask(){ log.info("定时任务开始执行:{}",new Date()); System.out.println("执行任务"+LocalDateTime.now()); System.out.println(LocalDateTime.now().isBefore(LocalDateTime.now().plusMinutes(1))); } }
3.Scheduled(cron=" * * * * * ")
可以根据在线Cron表达式生成器 (qqe2.com)来进行设置每过几分钟,几小时或者哪一天几点等等来设置所需要的业务
4、然后就可以在方法中设置自己所需要的业务
例 这个业务是商品在购物车中存在一天没付款后自动清除,系统设置每小时检查一次(当然也可以根据自己的需求来设置自己想要的)
@Component @Slf4j public class ShoppingCartsTask { @Autowired private ShoppingcartsMapper shoppingcartsMapper; @Autowired private ShoppingcartsService shoppingcartsService; @Scheduled(cron = "0 0 0/1 * * ?")//每小时触发一次,购物车中物品超过24小时为付款,直接清除 public void processTimeoutShoppingCart() { log.info("定时处理超时购物车:{}", LocalDateTime.now()); LambdaQueryWrapper<Shoppingcarts> lambdaQueryWrapper = new LambdaQueryWrapper<>(); List<Shoppingcarts> shoppingcarts = shoppingcartsMapper.selectList(lambdaQueryWrapper); if (!shoppingcarts.isEmpty()){ for (Shoppingcarts shoppingcart : shoppingcarts) { cart cart = new cart(); cart.setNum(1); BeanUtils.copyProperties(shoppingcart,cart); System.out.println(cart); if(shoppingcart.getCreateTime().isBefore(LocalDateTime.now().plusDays(-1))){ shoppingcartsService.delcart(cart); } } } } }