时间:2021-05-20
在项目日常开发过程中,经常需要定时任务来帮我们做一些工作,如清理日志。定时任务的实现方法主要有 Timer、Quartz 以及 elastic-job
Timer 实现定时任务
只执行一次的定时任务
循环执行任务
终止任务
Timer 是 JDK 实现的定时任务,用起来简单、方便,对一些简单的定时任务可以使用它。由于它不支持 cron 表达式,现在已经很少用了。
Quartz 实现定时任务
Quartz 是一个完全由 Java 编写的开源作业调度框架,可以用它来实现定时任务。
在 pom.xml 文件添加 Quartz 依赖
编写 Job
定时执行的任务
public class QuartzJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); String hello = (String) jobDataMap.get("hello"); System.err.println(hello); } }编写 Task
在项目启动的时候调用 task 方法即可启动定时任务。
Spring Boot 创建定时任务
Spring Boot 默认已经实现了定时任务,只需要添加相应的注解即可完成
pom.xml 文件配置
pom.xml 不需要添加其他依赖,只需要加入 Spring Boot 依赖即可,这里我们添加一个 web 和 test 的依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency></dependencies>在启动类上面加上 @EnableScheduling 注解
在启动类上面加上 @EnableScheduling 注解即可开启定时任务
@EnableScheduling@SpringBootApplicationpublic class SchedulingApplication { public static void main(String[] args) { SpringApplication.run(SchedulingApplication.class, args); }}编写定时任务
除了这些还支持 cron 表达式
@Scheduled(cron = "*/2 * * * * ?")public void task3() { System.out.println("每2秒执行一次!");}启动 Spring Boot 项目在控制台就会看到任务定时执行
cron 表达式
以下是 cron 表达式的的两种语法
Seconds Minutes Hours DayofMonth Month DayofWeek YearSeconds Minutes Hours DayofMonth Month DayofWeek每一个域可出现的字符如下:
举几个例子
*/2 * * * * ? 表示每2秒执行一次!0 0 2 1 * ? * 表示在每月的1日的凌晨2点调度任务 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业 0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作推荐一个 cron 表达式在线生成工具
http://tools.jb51.net/code/Quartz_Cron_create
参考资料
本文所有代码放在 Github 上
到此这篇关于SpringBoot中使用@Scheduled注解创建定时任务的实现的文章就介绍到这了,更多相关SpringBoot创建定时任务内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
序言使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式:一、基于注解(@Scheduled)二、基于接口(SchedulingConfig
在SpringBoot项目中,通过@EnableScheduling可启用Spring自带的定时任务支持,在通过@Scheduled注解定义定时任务,但是通过注
Spring提供了@Scheduled注解用于定时任务。一、@Scheduled的基本使用启用调度支持:@EnableScheduling可以将@Schedul
前言在Spring+SpringMVC环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用Spring自带的定时任务处理器@Scheduled注解,另一
@schedule注解是springboot常用的定时任务注解,使用起来简单方便,但是如果定时任务非常多,或者有的任务很耗时,会影响到其他定时任务的执行,因为s