很多项目中都会遇到需要定时任务的情况,本篇文章就结合了Spring中以及SpringBoot、SpringCloud中定时任务的解决方案。

在Spring中使用定时器

用SpringBoot比较多的同学可能都会觉得Spring的xml配置确实比较麻烦,如果想在Spring中使用定时器的话其实是必须使用xml配置文件的。

引入task约束

1

2

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-3.0.xsd

开启注解

1

2

以注解的方式使用

在项目中使用时定时任务的类必须由Spring来管理,所以我们给这个类加上一个@Component注解

1

2

3

4

5

6

7

8

9

10

11

@Component

public class Task {

/**

*每分钟执行一次

*/

@Scheduled(cron = "0 0/1 * * * ?")

public void test(){

System.out.println("task定时任务");

}

}

@Scheduled注解呢,就是表示启用定时任务,括号里的cron的值呢,其实就是一种表达式,就像上边的例子呢就是表示每分钟执行一次。(文章最后会有cron的详细用法介绍哦)

在SpringBoot和SpringCloud中使用定时器

在SpringBoot中使用的话相比较于Spring中就简单明了多了,一起来看一下吧。

引入task

灰常简单,启动类增加一个注解@EnableScheduling完事

使用

和Spring的使用方式一样,这里就不多做介绍了。

1

2

3

4

5

6

7

8

9

10

11

@Component

public class Task {

/**

*每分钟执行一次

*/

@Scheduled(cron = "0 0/1 * * * ?")

public void test(){

System.out.println("task定时任务");

}

}

优雅的初始化定时器

有的时候我们的定时任务可能几个小时需要执行一次。但是呢,我们可能会需要一些初始值。(假如说我们需要一些缓存,不想每次查询缓存都去判断的话我们就可以先在项目启动时就查询出来,然后定时刷新)如果把这个值的初始化过程放在类的构造方法中感觉岂不是太low了,那么有没有别的办法呢?

@PostConstruct注解,这个注解呢,可以在Spring加载这个类的时候执行一次,完美的解决我们上方所说的问题

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

@Component

public class Task {

private int num;

private Random rand = new Random();

/**

*每分钟执行一次

*/

@Scheduled(cron = "0 0/1 * * * ?")

public void test(){

System.out.println("task定时任务");

}

@PostConstruct

private void init(){

changeNum();

}

private void changeNum(){

//假装这是个查询数据库的操作

num=rand.nextInt(100);

}

}

cron表达式详解

来看一下如何使用cron表达式如何使用的吧

语法

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。

按顺序依次为

秒(0~59)

分钟(0~59)

小时(0~23)

天(月)(0~31)

月(0~11)

天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

年份(1970-2099)

-区间

*通配符

? 你不想设置那个字段

demo

注意下方*之间有空格

“0 0 1 ? ** ” 每天凌晨1点触发

“0 30 1 ? ** ” 每天凌晨1:30触发

“30 30 1 ? ** ” 每天凌晨1:30:30触发

“30 30 1 ** ? 2018” 2018年的每天凌晨1:30:30触发

“0 0/1 *** ?” 每分钟触发 一次

“0 0 0/1 ** ?” 每小时触发一次

“0 15 10 ? * MON-FRI” 周一到周五的10:15触发

如果觉得会用的到的话可以收藏转载哦!

java 100个定时任务_Java定时任务解决方案相关推荐

  1. java一定时间间隔的定时任务_Java 定时任务---Timer

    本文来自我一个朋友的个人博客(希望各位以后多多支持):https://www.liupeng.mobi/archives/777 一.Timer类 在java中一个完整的定时任务需要由Timer和Ti ...

  2. java如何实现定时任务_Java定时任务的三种实现方式

    前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清 ...

  3. java实现周期任务_java定时任务的实现方式

    本文列举常见的java定时任务实现方式,并做一定比较. 1. 循环内部sleep实现周期执行 创建一个thread,run() while循环里sleep()来实现周期性执行; 简单粗暴,作为一个初学 ...

  4. java文件定时读写_java定时任务及日志的使用

    需要引入日志的两个架包: log4j.jar和commons-logging.jar package com.lzl; import java.util.TimerTask; import org.a ...

  5. java定时任务_定时任务最简单的3种实现方法(超好用)

    定时任务在实际的开发中特别常见,比如电商平台 30 分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式. TOP 1: ...

  6. PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份

    PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份 参考文章: (1)PHP如何实现定时任务,PHP定时任务方法,最佳解决方案,PHP自动任务处理 自动备份 (2) ...

  7. java 客户端定时任务_定时任务最简单的3种实现方法(超实用)

    定时任务在实际的开发中特别常见,比如电商平台 30 分钟后自动取消未支付的订单,以及凌晨的数据汇总和备份等,都需要借助定时任务来实现,那么我们本文就来看一下定时任务最简单的几种实现方式. TOP 1: ...

  8. Java使用quartz实现任务调度定时任务

    1.添加quartz依赖 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter ...

  9. Java的定时器Timer和定时任务TimerTask应用以及原理简析

    记录:272 场景:Java JDK自带的定时器Timer和定时任务TimerTask应用以及原理简析.在JDK工具包:java.util中可以找到源码,即java.util.Timer和java.u ...

最新文章

  1. 计算机书籍-人工智能时代的设计师生存手册
  2. MaxCompute的任务状态和多任务执行
  3. LOJ #6358 前夕 (组合计数、容斥原理)
  4. 2条电信宽带 并线_理想更新“货车并线预警”遭用户吐槽 李想:目前功能偏保守 仍在优化...
  5. 终于快忙出头了,开了个FTP给大家用[mikespook]
  6. 在JDK 11中启动单文件源代码程序
  7. Android(java)学习笔记144:网络图片浏览器的实现(ANR)
  8. golang Println、Printf、Sprintf的区别
  9. 容器服kubernetes_Kubernetes,标准化和安全性主导2017年Linux容器新闻
  10. 我们一起踩过的坑----react(antd)(二)
  11. 同款视频一键制作生成微信小程序源码下载恶搞视频,特效视频,唯美视频等等
  12. u检验中的查u界值表_u检验、t检验、F检验、X2检验
  13. TOFLE-Mistake
  14. Ceres Solver:从入门到使用
  15. 【ZFNet】Visualizing and Understanding Convolutional Networks (2013) 全文翻译
  16. java后端处理Apple Pay流程
  17. 推荐系列(五):协同过滤的优点和缺点
  18. Python 串口发送十六进制数据
  19. matlab中求虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
  20. 查看linux centos ftp服务,Centos7开启FTP服务

热门文章

  1. WPS 提示缺字体
  2. 大型网站架构系列:20本技术书籍推荐
  3. 遗传算法MATLAB工具包简介
  4. 结对作业_core组
  5. sublime text3安装、注册及常用插件
  6. 作业五之系统设计时所实现的质量属性战术
  7. Mac突然连不上WiFi
  8. event事件的坐标 offsetWidth client scroll
  9. Clipboard.js – 现代方式实现复制文本到剪贴板
  10. play 1.2.4的action执行前后的加载逻辑