在日常项目运行中,我们总会有需求在某一时间段周期性的执行某个动作。比如每天在某个时间段导出报表,或者每隔多久统计一次现在在线的用户量。在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 (七)相关推荐

  1. springboot 定时任务schedule

    测试版本 1.5 和 2.0.4 完全一样 两步 1. 配置类 2.job 1.配置类 import org.springframework.context.annotation.Bean; impo ...

  2. SpringBoot定时任务简单应用

    SpringBoot定时任务可以用于周期性重复工作的编写,其应用简单,能满足绝大多数需求.在Java中实现定时任务主要有三种实现形式:一是使用JDK 自带的 Timer,二是使用第三方组件 Quart ...

  3. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  4. 定时任务(Schedule的使用)

    1.new Timer().schedule(new TimerTask(), 2000);//定时任务只执行一次,如何循环调用呢? 可以在new TimerTask的run方法中再new 新的Tim ...

  5. SpringBoot定时任务升级篇(动态添加修改删除定时任务)

    (1)思路说明: (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度. (b)ThreadPoolTaskSchedule ...

  6. SpringBoot定时任务@Scheduled注解详解

    SpringBoot定时任务@Scheduled注解详解 项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发 概述 要使用@Scheduled注解 ...

  7. Springboot定时任务 @Scheduled

    我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...

  8. SpringBoot定时任务实现的两种方式介绍

    今天给大家介绍SpringBoot定时任务实现的几种方式,希望对大家能有所帮助! 1.SpringTask 用法 框架介绍:SpringTask是Spring自带的轻量级定时任务工具,相比于Quart ...

  9. schedule php,PHP Laravel定时任务Schedule【干货】

    下面由Laravel教程栏目给大家介绍PHP Laravel定时任务Schedule,希望对需要的朋友有所帮助! 前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(M ...

最新文章

  1. 南昌计算机专业好的专科,2021年南昌计算机专业学校好不好
  2. 【WPF】代码触发Button点击事件
  3. 如何用python写程序设置当前打印机为默认打印机_从Python打印到标准打印机?
  4. java获取当前项目相对路径,在JAVA文件中获取该项目的相对路径
  5. EMNLP 2020 | 通过Contrast Set评估模型的局部决策边界
  6. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...
  7. Mac下配置iterm2 支持rz sz命令
  8. 【CodeForces - 1051D】Bicolorings (dp,类似状压dp)
  9. Python 学习第十七天 jQuery
  10. 【Linux】tee命令
  11. 工程思想——关于串口通讯协议帧数据的一些想法
  12. 洛谷 P2010 回文日期
  13. oracle12c备份和恢复,oracle12C使用RMAN备份和恢复
  14. C++面试题(数据结构)
  15. 神经网络 知识图谱,神经网络基础知识
  16. XUL透明异形旋转窗体
  17. 电脑自动关机后又自动开机怎么办
  18. 一个简单的静态网页制作(html+css)
  19. 《Excel大神上分攻略》学习笔记3——函数求和及常见函数
  20. 使用C#从图片文件生成图标ICON文件(附源文件)

热门文章

  1. Python(set/list/dict/tuple)
  2. 【随记】Q号解除限制一波三折
  3. sharepoint中显示网页库item的webpart和显示列表库item的webpart
  4. 在flash cs3场景中插入按钮以后,无法测试场景,删除按钮以后又可以测试?可能是按钮中某个帧上的文本对象的字体错了
  5. 桌面上的计算机图标一直被选定,常见电脑桌面图标问题十则
  6. mysql 表空间加密,MySql(8.0)基于docker部署(加密存储表空间)
  7. mysql抽屉图标_React Native自定义组件实现抽屉菜单控件效果
  8. layer 同步调用_YYText源码解读-YYText同步/异步渲染流程(一)—UIView与CALayer
  9. 前端python与php_WEB前端、PHP、python这三个学习哪一个比较好?
  10. python做系统查人的往来的信息_L01-04:python查询员工信息表练习