java4 -- SpringBoot定时任务调度
2022/2/11 11:16:04
本文主要是介绍java4 -- SpringBoot定时任务调度,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、定时删除数据库记录
首先,这个是根据业务要求的,比如是业务要求的是删除7天之前的所有记录,只保留近7天的数据,那么首先就先在数据库中修改SQL语句。
由于使用的是springBoot + Mybatis 所以需要修改的就是mappers.xml文件。
<delete id="delete*" parameterType="com.windaka.suizhi.switchcloudtest.model.*"> delete from 表 where DATE(time) < DATE(DATE_SUB(NOW(),INTERVAL 7 DAY)) // 代表时间是今天到7天前的时间范围 </delete>
之后,再写一个schedule配置文件
package com.*.schedul; import com.*.dao.*; import com.*.dao.*; import com.*.model.*; import com.*.model.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.EnableCaching; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * Created with IntelliJ IDEA. * 定时任务 * @Author: * @Date: 2021/12/30/9:42 * @Version 1.0 * @return * @Description: */ @Component @EnableCaching @EnableScheduling @Slf4j public class ScheduleConfig { @Autowired private *Mapper *Mapper; /** * 一分钟清理一次 ccar(车辆抓拍) 中多余的信息 防止数据堆积 * @author * @date 10:09 2021/12/30 * @param * @return * @other **/ //每天中午12点触发一次 @Scheduled(cron = "0 0 12 * * ?") public void cleanCar() { try { *Car *car = new *Car(); *Mapper.delete*(*car); System.out.println("车辆抓拍记录删除成功!"); }catch (Exception e){ log.error("删除7天前的车辆抓拍记录失败!"+e.getMessage()); } } }
注意:该代码只是一个案例,把一些具体的对象以*号表示,不能直接运行。
二、定时调用某个接口/方法
是SpringBoot项目中的定时器 (SpringBoot中的任务调度),如果是springboot项目,针对于某一个方法的调用,使用起来比较方便。
首先,在启动类上添加注解@EnableScheduling
@EnableFeignClients @EnableDiscoveryClient @SpringBootApplication @EnableScheduling public class SwitchCloudOnemachineOnegearApplication { public static void main(String[] args) { SpringApplication.run(SwitchCloudOnemachineOnegearApplication.class, args); } }
其次在需要使用任务调度的类上面加注解 @Component,使该类被Spring管理
之后在所要定时调度的方法上加上注解@Scheduled(cron=“0 0 0 * * ?”)。以下介绍@scheduled的属性
- cron属性:时间表达式
- fixedRate属性:上一个调用开始后再次调用的延时(再次调用时不需要等上一个调用执行完成)
- fixedDelay属性:上一个调用完成后再次调用的延时(再次调用时需要等上一个调用执行完成)
- initialDelay属性:第一次调用时的延迟时间
案例
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduleTest { //每1秒执行一次该方法 @Scheduled(fixedRate = 1000) public void test1() { System.out.println("定时调度1------"); } //每天12点执行一次该方法 @Scheduled("0 0 12 * * ?") public void test2() { System.out.println("定时调度2------"); } }
有时候,如果任务调度需要配合异步功能,那么类上需要加上@EnableAsync注解,该注解是加在类上的
参考来源:https://blog.csdn.net/Eternal_Blue/article/details/94442770
这篇关于java4 -- SpringBoot定时任务调度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南