-
2021-04-30 14:09:59
用Redis记录博客阅读量时,需要使用定时任务将数据更新到MySQL中
使用SpringBoot创建定时任务,目前主要有以下三种创建方式:
- 一、基于注解(@Scheduled)
- 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。
- 三、基于注解设定多线程定时任务
这次仅尝试了使用
@Scheduled
的方法1. 静态:基于注解
基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。
- 在启动类上添加
@EnableScheduling
开启定时任务
@SpringBootApplication @EnableScheduling // 2.开启定时任务 public class EblogApplication { public static void main(String[] args) { SpringApplication.run(EblogApplication.class, args); System.out.println("http://localhost:8080"); } }
- 编写定时任务
@Component // 将定时任务实例化到spring容器中 public class ViewCountSyncTask { @Scheduled(cron = "0/5 * * * * *") // 添加定时任务,每五秒执行一次 public void task() { // 任务内容 } }
Cron表达式参数分别表示:
- 秒(0~59) 例如0/5表示每5秒
- 分(0~59)
- 时(0~23)
- 日(0~31)的某天,需计算
- 月(0~11)
- 周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)
@Scheduled:除了支持灵活的参数表达式cron之外,还支持简单的延时操作,例如 fixedDelay ,fixedRate 填写相应的毫秒数即可。
// Cron表达式范例: 每隔5秒执行一次:/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
参考链接
更多相关内容 -
SpringBoot开启定时任务
2021-11-06 09:18:14静态定时任务(基于注解) 基于注解来创建定时任务非常简单,只需几行代码便可完成。 @Scheduled 除了支持灵活的参数表达式cron之外,...开启定时任务 public class SimpleScheduleConfig { //3.添加定时任务 @Schedu静态定时任务(基于注解)
基于注解来创建定时任务非常简单,只需几行代码便可完成。
@Scheduled 除了支持灵活的参数表达式cron之外,还支持简单的延时操作,例如 fixedDelay ,fixedRate 填写相应的毫秒数即可。
@Configuration //1.主要用于标记配置类,兼备Component的效果。 @EnableScheduling // 2.开启定时任务 public class SimpleScheduleConfig { //3.添加定时任务 @Scheduled(cron = "0/5 * * * * ?") private void configureTasks() { System.err.println("执行定时任务1: " + LocalDateTime.now()); } }
Cron表达式参数分别表示:
秒(0~59) 例如0/5表示每5秒
分(0~59)
时(0~23)
月的某天(0~31) 需计算
月(0~11)
周几( 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT)
启动应用,可以看到控制台的信息如下: -
Springboot开启定时任务
2022-01-21 14:27:00@SpringBootApplication //扫描mybatis通用mapper所在的包 @MapperScan(basePackages = "com.xpf.mapper") //扫描所有包,以及相关组件包 @ComponentScan(basePackages = {"com.xpf","org.n3r.idworker"}) //开启...1、加上@Scheduled注解
import com.xpf.utils.DateUtil; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class OrderJob { @Scheduled(cron = "0/3 * * * * ? ") public void autoCloseOrder(){ System.out.println("执行定时任务,当前时间为:"+ DateUtil.getCurrentDateString(DateUtil.DATETIME_PATTERN)); } }
其中cron的值,可以在在线Cron表达式生成器此网页中设置自己想要间隔的时间,自动生成对应的cron表达式。比如我这边设置的是每隔3秒,执行一次。
2、在启动的类中加上@EnableScheduling注解
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication //扫描mybatis通用mapper所在的包 @MapperScan(basePackages = "com.xpf.mapper") //扫描所有包,以及相关组件包 @ComponentScan(basePackages = {"com.xpf","org.n3r.idworker"}) //开启定时任务 @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
3、控制台输出结果
-
springboot开启定时任务
2020-10-06 11:14:18在springboot中添加定时任务更加简便,只需要几个注解就可以轻松解决。 首先在springboot项目的启动类上加上一个注解 @EnableScheduling 然后再建一个类来用于定时任务 tips:建议再建一个包 @Compon在生活中有许许多多的定时应用,最莫过于熟悉的就是闹钟,闹钟在调定时间之后就按照调定的时间进行响铃。
在一个web项目中,有时也需要定时任务,eg:统计每天的登录人数,或者每天注册账号的数量,这些都是需要每天或者固定一段时间就需要生成的数据,所以用定时来做就比较好了。
在springboot中添加定时任务更加简便,只需要几个注解就可以轻松解决。
首先在springboot项目的启动类上加上一个注解
@EnableScheduling
然后再建一个类来用于定时任务
tips:建议再建一个包@Component
是将该类交给spring管理
@Scheduled(cron = "0/5 * * * * ?")
是定时任务的注解,
cron是一种表达式,具体可以参考阿里云的文档,很详细,地址如下:https://help.aliyun.com/document_detail/169784.html?spm=5176.13910061.sslink.4.10607fbbHfhVrM对了,另外提一下,百度上找到关于cron表达式的文章一般可能都是有
七个占位符
的,但springboot中默认指定的是当前年
,即年份的占位符不需要给,给了反而会报错。
这不是我随便说的,有源码可证,如图: -
springboot定时任务的动态开启关闭
2019-03-07 17:43:08SpringBoot实现定时任务的动态开启关闭,如有疑问联系wx: hsj179540 -
springBoot开启定时任务
2020-06-12 17:21:09import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component ... -
SpringBoot开启定时任务@Scheduled
2022-01-04 11:28:351.启动类Application开启定时任务 类上添加注解开启:@EnableScheduling 2.编写任务类 @Component //添加spring管理 public class job { @Scheduled(cron = "0 0 2 * * ?")//每天凌晨两点开始执行 public ... -
SpringBoot实现定时任务的两种方式(详细)
2022-03-25 09:59:57定时任务是企业级开发中最常见的功能之一,如定时推送短信和邮件、数据库备份、定时统计收益、定时统计访客等,简单的定时任务可以直接通过Spring中的@Scheduled注解来实现,复杂的定时任务则可以通过集成Quartz来... -
SpringBoot——开启定时任务
2021-10-13 11:24:24使用SpringBoot创建定时任务非常简单,目前主要有以下两种创建方式: 1、基于注解(@Scheduled) 2、基于接口(SchedulingConfigurer) 基于注解 基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受... -
SpringBoot添加定时任务
2022-04-06 15:25:15开启定时任务 在启动类上添加@EnableScheduling注解,启动自动任务 @EnableScheduling @SpringBootApplication public class TestDemoApplication { public static void main(String[] args) { ... -
springboot设置定时任务
2022-04-06 14:09:25springboot设置定时任务 -
springboot实现定时任务
2021-05-15 15:17:20使用 @Scheduled 非常容易,直接创建一个 Spring Boot 项目,并且添加 web 依赖spring-boot-starter-web,项目创建成功后,添加@EnableScheduling注解,开启定时任务: 如下: @SpringBoot... -
SpringBoot之定时任务
2021-07-24 14:42:23使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来... -
springboot动态添加修改删除定时任务.md
2020-09-09 17:44:00(b)ThreadPoolTaskScheduler.schedule()方法会创建一个定时计划ScheduledFuture,在这个方法需要添加两个参数,Runnable(线程接口类) 和CronTrigger(定时任务触发器)(c)在ScheduledFuture中有一个cancel可以... -
SpringBoot实现定时任务的三种方式,总有一款适合你!
2022-03-26 00:13:52点击关注公众号,利用碎片时间学习序言SpringBoot创建定时任务,目前主要有以下三种实现方式:基于注解(@Scheduled): 基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的... -
springboot的定时任务注解
2021-04-25 14:45:36最近项目中用到定时任务,所以需要在spring boot项目中集成定时任务。整体来说非常简单,以下详细说明。 一、在Application启动类上添加@EnableScheduling注解启动定时,代码如下。 package com.example.task; ... -
springboot实现定时任务(一) 基于@Scheduled注解
2022-04-10 21:35:36在平常的开发工作中,我们经常会用到定时任务,比如定时刷新数据,定时去执行某个业务操作,定时任务,我们经常使用,那么springboot可以怎样实现定时任务呢? 1:创建定时任务:方法上添加@Scheduled注解,定义... -
SpringBoot实现定时任务的三种方式
2022-04-08 12:44:50第一种我们可以使用java原生提供的api去实现一个定时任务 利用Timer这个api,去实现定时任务,用Timertask去创建一个任务 public class javaJob { public static void main(String[] args) { //利用java的api ... -
springboot定时任务
2020-08-05 11:43:35使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一、基于注解(@Scheduled) 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来... -
SpringBoot实现定时任务的动态创建、启动、暂停、恢复、删除。
2020-12-29 03:38:51在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停... -
SpringBoot自带定时任务实现
2022-05-22 19:52:07SpringBoot实现定时任务非常简单只需要在启动雷伤添加@EnableScheduling注解即可开启定时任务 @EnableScheduling 生成另外就是使用cron表达式自定义执行时间,这个可以去百度查询或一些网站都可以自定义生成,这里... -
SpringBoot创建定时任务
2022-02-17 11:18:40SpringBoot创建定时任务1. 首先在启动类加 @EnableScheduling 注解,开启定时任务2. 然后在类中,导入Schedule包并添加注解3. @Scheduled 常用时间 1. 首先在启动类加 @EnableScheduling 注解,开启定时任务 import... -
SpringBoot 如何执行定时任务
2021-03-29 10:10:56SpringBoot 如何执行定时任务 工作中有需要应用到定时任务的场景,一天一次,一周一次,一月一次,一年一次,做日报,周报,月报,年报的统计,以及信息提醒,等,spring boot 提供了一个两种方式实现定时任务。 ... -
SpringBoot创建定时任务的三种方式
2021-06-23 16:07:23SpringBoot创建定时任务的三种方式 一、基于Cron表达式创建 SpringBoot提供了@Schedule标签来创建定时任务,用此标签创建的定时任务为单线程,如果有多个定时任务,使用的是一个线程来执行的。具体使用如下: //... -
SpringBoot 实现定时任务
2021-03-28 10:22:26定时任务就是企业级开发中...在启动类上添加 @EnableScheduling 注解开启定时任务,代码如下: @SpringBootApplication @EnableScheduling // 启动类添加此注解就表示开启了定时任务功能 public class SoftApplicatio -
SpringBoot之定时任务详解
2020-12-19 13:14:561、创建定时器使用SpringBoot基于注解来创建定时任务非常简单,只需几行代码便可完成。 代码如下:如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java... -
springboot定时任务注解的使用
2021-12-19 22:17:25@SpringBootApplication @EnableScheduling public class ManagerApplication { public static void main(String[] args) { SpringApplication.run(PwManagerApplication.class, args); } } 2.在方法上加上@... -
【九】springboot整合定时任务(超详细)
2021-09-07 17:39:26本章 将对其进行改进,整合定时任务,在某一时间再进行新增操作(会更优化,若每次请求接口时切面都去进行一个新增日志操作会对服务器造成很大压力)。 首先还是展示目录结构: 本章主要采用队列,定时任务 ...