spring boot 实现定时任务
定时任务或者说定时调度,是系统中比较普遍的一个功能,例如数据归档、清理,数据定时同步(非实时),定时收发等等都需要用到定时任务,常见的定时调度框架有Quartz、TBSchedule等。
如何在Spring boot里实现定时任务呢?
SpringBoot定时方式有很多种,我才用 @Scheduled 注解配置定时任务
Spring自3.0版本起也增加了任务调度功能Schedule,它是一个轻量级的Quartz,使用起来方便、简洁,且不需要依赖其他的JAR包。
@EnableScheduling开启计划任务支持,在入口类中添加
@Scheduled计划任务声明,在具体方法中添加
eg:
package com.tydt.bim.common; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import java.text.SimpleDateFormat;
import java.util.Date;
@EnableScheduling
@Component
@EnableAsync
public class ScheduleSetting {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /**
* fixedRate多久执行一次,单位:毫秒
* initialDelay 延迟容器启动后执行,单位:毫秒
*/
@Async
@Scheduled(fixedRate = 10000,initialDelay = 2000)
public void scheduleTest1(){
System.out.println("10s执行一次--->"+sdf.format(new Date()));
} /**
* fixedDelay在指定的时间执行一次,单位:毫秒
* 在创建后会执行一次,在第一次执行后,会每隔5S执行一次
*/
@Async
@Scheduled(fixedDelay = 5000)
public void scheduleTest2(){
System.out.println("5s执行一次--->"+sdf.format(new Date()));
} /**
* cron表达式,下面表示,每隔20s执行一次,具体的可以自行定义
*/
@Async
@Scheduled(cron = "0/20 * * * * ? ")
public void scheduleTest3(){
System.out.println("20执行一次--->"+sdf.format(new Date()));
}
}
说明:
@Scheduled
参数可以接受两种定时的设置
表示每隔五秒执行一次
(1)fixedRate = 5000
(2)cron =
"0/5 * * * * ? "
cron表达式
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为:
秒(0~59)
分钟(0~59)
3 小时(0~23)
4 天(0~31)
5 月(0~11)
6 星期(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于”月份中的日期”和”星期中的日期”这两个元素互斥的,必须要对其中一个设置。配置实
例:
/5 * * * ? 每隔5秒执行一次
0 /1 * * ? 每隔1分钟执行一次
0 0 10,15,18 * * ? 每天上午10点,下午3点,6点
0 0 12 * * ? 每天中午12点触发
0 15 10 * * ? * 每天上午10:15触发
@EnableAsync开启多线程
@Async标记其为一个异步任务
注:
自带的Schedule不支持分布式部署
spring boot 实现定时任务的更多相关文章
- Spring Boot配置定时任务
在项目开发过程中,经常需要定时任务来做一些内容,比如定时进行数据统计(阅读量统计),数据更新(生成每天的歌单推荐)等. Spring Boot默认已经实现了,我们只需要添加相应的注解就可以完成定时任务 ...
- 【Spring Boot】定时任务
[Spring Boot]定时任务 测试用业务Service package com.example.schedule.service; import org.springframework.ster ...
- spring boot 创建定时任务
@Scheduled默认创建的线程是单线程,任务的执行会受到上一个任务的影响,创建定时任务也比较简单 123456789101112 @Component@Configuration //1.主要用于 ...
- Spring Boot:定时任务
在我们开发项目过程中,经常需要定时任务来帮助我们来做一些内容, Spring Boot 默认已经帮我们实行了,只需要添加相应的注解就可以实现 1.pom 包配置 pom 包里面只需要引入 Spring ...
- Spring boot创建定时任务
基于spring boot的应用创建定时任务不要太简单,给一个类加上@Configuration @EnableScheduling注解,然后给该类需要定时执行的方法加上@Scheduled(cron ...
- Spring Boot (29) 定时任务
使用场景:数据定时增量同步,定时发送邮件,爬虫定时抓取 定时任务概述 定时任务:顾名思义就是在特定/指 定的时间进行工作,比如我们的手机闹钟,他就是一种定时的任务. 实现方式: 1.Timer:JDK ...
- 【Spring Boot学习之六】Spring Boot整合定时任务&异步调用
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2一.定时任务1.启动类添加注解@EnableScheduling 用于开启定时任务 package com.wjy; i ...
- Spring Boot 实现定时任务的 4 种方式
作者:Wan QingHua wanqhblog.top/2018/02/01/SpringBootTaskSchedule/ 定时任务实现的几种方式: Timer:这是java自带的java.uti ...
- Spring Boot Scheduled定时任务特性
SpringBoot中的Scheduled定时任务是Spring Boot中非常常用的特性,用来执行一些比如日切或者日终对账这种定时任务 下面说说使用时要注意的Scheduled的几个特性 Sched ...
随机推荐
- template-web.js 自定义过滤器
// 比如需要自定义一个去零的过滤器 <script id="templateTest" type="text/html"> <% for(i ...
- JS的ES5的扩展内容
JS的ES5 1.严格模式: (1)什么是严格模式: 在全局或函数的第一条语句定义为: 'use strict' 如果浏览器不支持, 只解析为一条简单的语句, 没有任何副作用 (2)严格模式作用: ...
- GitHub 手把手教你如何把本地项目或代码提交到Github托管
GitHub 手把手教你如何把项目或代码提交到Github托管 启动Git Bash命令行 重点内容 1.首先打开你的github,点击新建项目,点击new repositories ,然后直接给项目 ...
- vuex实现登录状态的存储,未登录状态不允许浏览
基础思路就是使用vuex状态管理来存储登录状态(其实就是存一个值,例如token),然后在路由跳转前进行登录状态的判断,可以使用vue-router的全局前置守卫beforeEach,也可以使用路由独 ...
- Exploiting ConvNet Diversity for Flooding Identification
语义分割洪水区域. 空洞卷积和反卷积组合,结果再用svm学习如何组合,能获得更好的效果. 直接对不同网络的结果进行投票会得到更差的结果. 消融研究(Ablation Study):类似控制变量法,就对 ...
- tomcat做成Windows自启动服务
一.下载Tomcat 下载Windows版本的tomcat,一般是以zip结尾的包,免安装的包,而Linux包虽然解压可以运行,但是缺少service.bat关键文件,无法做成服务形式 下载网站: h ...
- AngularJS实现地址栏取值
有时候我们由如下需求 1.从a.html跳转到b.html 2.从a跳转时携带参数和值. 3.从b.html中取出传过来的参数值 在AngularJS的操作如下 在a.html中添加 <a hr ...
- 表格样式、表格css、
.mytab{ border-collapse: collapse;}.mytab tr,.mytab td,.mytab th{ text-align: center; border: 1px so ...
- 冰多多团队-第六次Scrum会议
冰多多团队-第六次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj ASR bug修复 接入IAT模块 牛雅哲 完成语音识别->词典->termux的接口设计,熟悉了语法 ...
- spring-boot 知识集锦
1.spring-boot项目在外部tomcat环境下部署 https://blog.csdn.net/james_wade63/article/details/51009423 https://bl ...