spring boot 使用Schedule创建轻量级定时任务
Scheduled
SpringBoot配置定时任务可以直接使用自带的Scheduled,这相当于一个轻量级的Quartz,它可以让我们直接使用注解来完成定时任务的配置。
Scheduled调度时间设置说明
使用Scheduled设置任务调度时间有以下几种方式,可根据实际情况选取一种即可:
//通过fixedRate属性,来设置上一次调度开始后再次调度的延时,fixedRate值的单位为毫秒,此例为每5秒执行1次
//注意:fixedRate只要到达间隔时间就会调度执行,不关心上次任务是否已执行完成,这样就会存在重复执行的风险!
@Scheduled(fixedRate = 5000) //该属性的功效与上面的fixedRate则是相反的,配置了该属性后会等到任务方法执行完成后,达到延迟配置的时间再次执行该方法
@Scheduled(fixedDelay = 5000) //通过cron属性,使用Cron表达式来设置执行时间,此例为每10秒执行1次
//在线Cron表达式生成器:http://cron.qqe2.com/
@Scheduled(cron="*/10 * * * * ?")
别外,可以通过initialDelay属性来设置第一次执行的延迟时间,只是做延迟的设定,并不会控制其他逻辑,需要配合fixedDelay或者fixedRate来使用
//第一次延迟10秒执行,之后每间隔5秒执行一次
@Scheduled(fixedDelay = 5000, initialDelay = 10000)
调度任务(定时任务)实现类
调度任务1
package Scheduler; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date; @Service
public class SchedulingTask1 { private Integer count=0;
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //通过fixedRate属性,来设置上一次调度开始后再次调度的延时,fixedRate值的单位为毫秒,此例为每5秒执行1次
@Scheduled(fixedRate = 5000)
private void process(){
//输出
System.out.println(String.format("第%s次执行任务SchedulingTask1 时间:%s", (++count).toString(), dateFormat.format(new Date())));
}
}
调度任务2
package Scheduler; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date; @Service
public class SchedulingTask2 { private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //通过cron属性,使用Cron表达式来设置执行时间,此例为每10秒执行1次
@Scheduled(cron="*/10 * * * * ?")
private void process(){
//输出
System.out.println(String.format("SchedulingTask2执行... 时间:%s", dateFormat.format(new Date())));
}
}
也可以将SchedulingTask2类中的方法写在SchedulingTask1类中。
调度配置类
@ComponentScan注解的作用就是根据定义的扫描路径,把符合扫描规则的类装配到spring容器中
@EnableScheduling注解开启对计划任务的支持
package Scheduler; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling; @Configuration
@ComponentScan("Scheduler")
@EnableScheduling //通过@EnableScheduling注解开启对计划任务的支持
public class SchedulerConfig {
}
启动类
使用AnnotationConfigApplicationContext可以实现基于Java的配置类(包括各种注解)加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷。
package com.lgt.demo2; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import Scheduler.SchedulerConfig; @SpringBootApplication
public class Demo2Application { public static void main(String[] args) {
SpringApplication.run(Demo2Application.class, args);
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(SchedulerConfig.class);
} }
输出结果
第1次执行任务SchedulingTask1 时间:2019-04-15 13:41:33
第2次执行任务SchedulingTask1 时间:2019-04-15 13:41:38
SchedulingTask2执行... 时间:2019-04-15 13:41:40
第3次执行任务SchedulingTask1 时间:2019-04-15 13:41:43
第4次执行任务SchedulingTask1 时间:2019-04-15 13:41:48
SchedulingTask2执行... 时间:2019-04-15 13:41:50
第5次执行任务SchedulingTask1 时间:2019-04-15 13:41:53
第6次执行任务SchedulingTask1 时间:2019-04-15 13:41:58
SchedulingTask2执行... 时间:2019-04-15 13:42:00
spring boot 使用Schedule创建轻量级定时任务的更多相关文章
- [转] 使用Spring Boot和Gradle创建项目
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...
- 使用Spring Boot和Gradle创建AngularJS项目
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...
- [转]通过Spring Boot三分钟创建Spring Web项目
来源:https://www.tianmaying.com/tutorial/project-based-on-spring-boot Spring Boot简介 接下来我们所有的Spring代码实例 ...
- Spring Boot的快速创建
一.利用向导快速搭建Spring Boot应用 创建一个controller package com.hoje.springboot.Controller; import org.springfram ...
- spring boot 2X中@Scheduled实现定时任务及多线程配置
使用@Scheduled 可以很容易实现定时任务 spring boot的版本 2.1.6.RELEASE package com.abc.demo.common; import org.slf4j. ...
- Spring Boot TImer Schedule Quartz
Spring Boot 2.X(十二):定时任务-云栖社区-阿里云https://yq.aliyun.com/articles/723876?spm=a2c4e.11155472.0.0.2f8b3a ...
- spring boot 之 如何创建spring boot项目
创建spring boot的方式有非常多,今天我们使用maven来进行创建spring boot项目,因为maven使用的非常广泛,也很好用,很多IDE也都支持maven. 1 创建maven项目 1 ...
- spring boot 项目的创建
一. 进入https://start.spring.io 快速创建项目 二. 利用eclipse sts插件创建项目 1. 安装sts插件 进入https://spring.io/tools3/sts ...
- idea 社区版+spring boot+ssm+swagger创建rest api
新手上路,出了好多错,记录一下 1.创建数据库:springBootSsmTest 2.打开IDEA创建 Spring boot项目:File——New——Project——Spring Assist ...
随机推荐
- 文件共享和使用 dup 函数创建新描述符的区别
前言 文件共享是指同时打开一个文件 用 dup 函数能对指定文件描述符再创建一个新的描述符,且这个新的描述符和旧的描述符指向的是同一个文件. 这两种行为有什么区别呢?下面给出的两张文件系统的图形象的解 ...
- php 去除html标记-strip_tags和htmlspecialchars的区别
strip_tags 去掉 HTML 及 PHP 的标记. 语法: string strip_tags(string str); 传回值: 字串 函式种类: 资料处理 内容说明 本函式可去掉字串中包含 ...
- HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件
HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件.它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的.为了容错,文件的所有数据块都会有副本.每个文件的数据块大小和副本 ...
- h5的缓存机制
H5的缓存,大概有localstorage.sessionstorage.cookie和manifest. 一.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏览 ...
- 编写按键驱动以及在framework层上报按键事件
平台信息:内核:linux3.10 系统:android6.0平台:RK3288 前言:本文主要实现的功能是在android系统中添加一个按键,在驱动层使用定时器,每隔1秒钟向上层发送按键实现,fra ...
- LightOJ - 1030 Discovering Gold —— 期望
题目链接:https://vjudge.net/problem/LightOJ-1030 1030 - Discovering Gold PDF (English) Statistics For ...
- sqlserver锁表查看
sp_lock--查询哪个进程锁表了,spid:进程ID,ObjId:对象ID EXEC sp_executesql N'KILL [spid]'--杀进程 select object_name([O ...
- cassandra 存储list数组
demo如下: CREATE TABLE users3 ( user_id text PRIMARY KEY, first_name text, last_name text, emails list ...
- 编译thrift外篇-关于默认链接包-(使用mapkeeper运行leveldb成功)
根据 https://stackoverflow.com/questions/9922949/how-to-print-the-ldlinker-search-path 使用 ldconfig -v ...
- 页面渲染——简化paint复杂程度和区域
Paint是填充像素并且最后合成在用户的屏幕上的过程. 通常是在管道中耗费最大的,你要尽可能的避免使用paint. 动画中使用除了transform和opacity的动画属性都将触发paint pai ...