SpringBoot定时任务Schedule (七)
在日常项目运行中,我们总会有需求在某一时间段周期性的执行某个动作。比如每天在某个时间段导出报表,或者每隔多久统计一次现在在线的用户量。在springboot中可以有很多方案去帮我们完成定时器的工作,有Java自带的java.util.Timer类,也有强大的调度器Quartz,还有SpringBoot自带的Scheduled,今天主要说说Scheduled。
定时器比较
框架名称 | Cron表达式 | 固定间隔执行 | 固定频率执行 | 任务持久化 | 难易度 |
---|---|---|---|---|---|
TimerTask | 不支持 | 支持 | 支持 | 不支持 | 一般 |
schedule | 支持 | 支持 | 支持 | 不支持 | 简单 |
Quartz | 支持 | 支持 | 支持 | 支持 | 难 |
在实际应用中,如果没有分布式场景(quartz 支持分布式, schedule 不支持(需要自己实现,用分布式锁),schedule跟spring结合的更好,还是很适用的。
创建schedule工程
使用IntelliJ IDEA创建helloschedule
点击finish完成项目的创建。
为了方便演示,使用@Slf4j输出日志,添加lombok引用,@Slf4j不清楚的可以看看SpringBoot(八)配置logback日志
添加export类。
package com.task.log;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;import java.text.SimpleDateFormat;
import java.util.Date;/*** Created by toutou on 2018/10/20.*/
@Component
@Slf4j
public class export {@Scheduled(cron = "0 0/1 * * * ?")public void minuteExport(){log.debug("每分钟执行一次的任务:" + getDate());}@Scheduled(fixedRate = 5000)public void fiveSecondExport(){log.debug("每5秒执行一次:" + getDate());}@Scheduled(cron = "0/2 * * * * ?")public void twoSecondExport(){log.debug("每2秒执行一次:" + getDate());}@Scheduled(cron = "0 55 14 ? * *")public void regularTimeExport(){log.debug("每天上午14点55分执行:" + getDate());}private String getDate(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(new Date());}
}
启动类中添加@EnableScheduling
注解,然后运行。
查看IntelliJ IDEA控制台日志和物理文件日志
如上图,简单的定时任务输出日志搭建完成。
SpringBoot定时任务Schedule (七)相关推荐
- springboot 定时任务schedule
测试版本 1.5 和 2.0.4 完全一样 两步 1. 配置类 2.job 1.配置类 import org.springframework.context.annotation.Bean; impo ...
- SpringBoot定时任务简单应用
SpringBoot定时任务可以用于周期性重复工作的编写,其应用简单,能满足绝大多数需求.在Java中实现定时任务主要有三种实现形式:一是使用JDK 自带的 Timer,二是使用第三方组件 Quart ...
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- 定时任务(Schedule的使用)
1.new Timer().schedule(new TimerTask(), 2000);//定时任务只执行一次,如何循环调用呢? 可以在new TimerTask的run方法中再new 新的Tim ...
- SpringBoot定时任务升级篇(动态添加修改删除定时任务)
(1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...
- SpringBoot定时任务@Scheduled注解详解
SpringBoot定时任务@Scheduled注解详解 项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发 概述 要使用@Scheduled注解 ...
- Springboot定时任务 @Scheduled
我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...
- SpringBoot定时任务实现的两种方式介绍
今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...
- schedule php,PHP Laravel定时任务Schedule【干货】
下面由Laravel教程栏目给大家介绍PHP Laravel定时任务Schedule,希望对需要的朋友有所帮助! 前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(M ...
最新文章
- 南昌计算机专业好的专科,2021年南昌计算机专业学校好不好
- 【WPF】代码触发Button点击事件
- 如何用python写程序设置当前打印机为默认打印机_从Python打印到标准打印机?
- java获取当前项目相对路径,在JAVA文件中获取该项目的相对路径
- EMNLP 2020 | 通过Contrast Set评估模型的局部决策边界
- flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...
- Mac下配置iterm2 支持rz sz命令
- 【CodeForces - 1051D】Bicolorings (dp,类似状压dp)
- Python 学习第十七天 jQuery
- 【Linux】tee命令
- 工程思想——关于串口通讯协议帧数据的一些想法
- 洛谷 P2010 回文日期
- oracle12c备份和恢复,oracle12C使用RMAN备份和恢复
- C++面试题(数据结构)
- 神经网络 知识图谱,神经网络基础知识
- XUL透明异形旋转窗体
- 电脑自动关机后又自动开机怎么办
- 一个简单的静态网页制作(html+css)
- 《Excel大神上分攻略》学习笔记3——函数求和及常见函数
- 使用C#从图片文件生成图标ICON文件(附源文件)
热门文章
- Python(set/list/dict/tuple)
- 【随记】Q号解除限制一波三折
- sharepoint中显示网页库item的webpart和显示列表库item的webpart
- 在flash cs3场景中插入按钮以后,无法测试场景,删除按钮以后又可以测试?可能是按钮中某个帧上的文本对象的字体错了
- 桌面上的计算机图标一直被选定,常见电脑桌面图标问题十则
- mysql 表空间加密,MySql(8.0)基于docker部署(加密存储表空间)
- mysql抽屉图标_React Native自定义组件实现抽屉菜单控件效果
- layer 同步调用_YYText源码解读-YYText同步/异步渲染流程(一)—UIView与CALayer
- 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
- python做系统查人的往来的信息_L01-04:python查询员工信息表练习