前言

最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能。
下面说一下两种方式在Spring Boot 项目中的使用。
Spring Schedule 实现定时任务
Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解。 因为是Spring Boot 项目 可能尽量避免使用XML配置的形式,主要说注解的形式.
Spring Schedule 提供三种形式的定时任务:
固定等待时间 @Scheduled(fixedDelay = 时间间隔 )
@Component
public class ScheduleJobs {
public final static long SECOND = 1 * 1000;
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
@Scheduled(fixedDelay = SECOND * 2)
public void fixedDelayJob() throws InterruptedException {
TimeUnit.SECONDS.sleep(2);
System.out.println("[FixedDelayJob Execute]"+fdf.format(new Date()));
}
}
固定间隔时间 @Scheduled(fixedRate = 时间间隔 )
@Component
public class ScheduleJobs {
public final static long SECOND = 1 * 1000;
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
@Scheduled(fixedRate = SECOND * 4)
public void fixedRateJob() {
System.out.println("[FixedRateJob Execute]"+fdf.format(new Date()));
}
}
Corn表达式 @Scheduled(cron = Corn表达式)
@Component
public class ScheduleJobs {
public final static long SECOND = 1 * 1000;
FastDateFormat fdf = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
@Scheduled(cron = "0/4 * * * * ?")
public void cronJob() {
System.out.println("[CronJob Execute]"+fdf.format(new Date()));
}
}
Spring Boot 整合 Quartz 实现定时任务
添加Maven依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
Spring Boot 整合 Quartz
Spring 项目整合 Quartz 主要依靠添加 SchedulerFactoryBean 这个 FactoryBean ,所以在maven 依赖中添加 spring-context-support 。
首先添加 QuartzConfig 类 来声明相关Bean
@Configuration
public class QuartzConfig {
@Autowired
private SpringJobFactory springJobFactory;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setJobFactory(springJobFactory);
return schedulerFactoryBean;
}
@Bean
public Scheduler scheduler() {
return schedulerFactoryBean().getScheduler();
}
}
这里我们需要注意 我注入了一个 自定义的JobFactory ,然后 把其设置为SchedulerFactoryBean 的 JobFactory。其目的是因为我在具体的Job 中 需要Spring 注入一些Service。
所以我们要自定义一个jobfactory, 让其在具体job 类实例化时 使用Spring 的API 来进行依赖注入。
SpringJobFactory 具体实现:
@Component
public class SpringJobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object jobInstance = super.createJobInstance(bundle);
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
具体使用 (摘取自项目代码):
@Service
public class QuartzEventServiceImpl implements QuartzEventService {
private static final String JOB_GROUP = "event_job_group";
private static final String TRIGGER_GROUP = "event_trigger_group";
@Autowired
private Scheduler scheduler;
@Override
public void addQuartz(Event event) throws SchedulerException {
JSONObject eventData = JSONObject.parseObject(event.getEventData());
Date triggerDate = eventData.getDate("date");
JobDetail job = JobBuilder.newJob(EventJob.class).withIdentity(event.getId().toString(), JOB_GROUP).usingJobData(buildJobDateMap(event)).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(event.getId().toString(), TRIGGER_GROUP).startAt(triggerDate).build();
scheduler.scheduleJob(job, trigger);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# springboot整合quartz
# spring
# boot
# 定时
# schedule
# SpringBoot中实现定时任务的4种方式详解
# SpringBoot中实现定时任务的几种方式
# SpringBoot2 task scheduler 定时任务调度器四种方式
# SpringBoot下使用定时任务的方式全揭秘(6种)
# SpringBoot实现固定和动态定时任务的三种方法
# Springboot实现定时任务的4种方式举例详解
# SpringBoot实现定时任务的三种方式小结
# SpringBoot最新定时任务的7种实现方案
# 自定义
# 的是
# 都是
# 我在
# 两种
# 三种
# 有两种
# 设置为
# 来实现
# 可以帮助
# 需要注意
# 让其
# 其目
# 大家多多
# 近看
# format
# throws
# fixedDelayJob
# InterruptedException
# sleep
相关文章:
c# 在高并发场景下,委托和接口调用的性能对比
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
深圳网站制作平台,深圳市做网站好的公司有哪些?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
如何高效完成自助建站业务培训?
宝塔新建站点为何无法访问?如何排查?
如何快速搭建二级域名独立网站?
建站主机空间推荐 高性价比配置与快速部署方案解析
,sp开头的版面叫什么?
网站制作知乎推荐,想做自己的网站用什么工具比较好?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站主机类型有哪些?如何正确选型
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在西部数码注册域名并快速搭建网站?
网站制作公司排行榜,抖音怎样做个人官方网站
电商平台网站制作流程,电商网站如何制作?
建站之星如何实现PC+手机+微信网站五合一建站?
建站之星在线版空间:自助建站+智能模板一键生成方案
购物网站制作公司有哪些,哪个购物网站比较好?
如何快速建站并高效导出源代码?
在线制作视频的网站有哪些,电脑如何制作视频短片?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
,怎么在广州志愿者网站注册?
高防服务器租用首荐平台,企业级优惠套餐快速部署
建站主机是什么?如何选择适合的建站主机?
如何正确下载安装西数主机建站助手?
如何用景安虚拟主机手机版绑定域名建站?
Android自定义控件实现温度旋转按钮效果
如何注册花生壳免费域名并搭建个人网站?
山东网站制作公司有哪些,山东大源集团官网?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
如何快速使用云服务器搭建个人网站?
建站之星如何快速更换网站模板?
黑客如何通过漏洞一步步攻陷网站服务器?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何高效利用200m空间完成建站?
如何选择建站程序?包含哪些必备功能与类型?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
建站之星伪静态规则如何正确配置?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
定制建站流程步骤详解:一站式方案设计与开发指南
建站主机如何安装配置?新手必看操作指南
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
*请认真填写需求信息,我们会在24小时内与您取得联系。