当前位置: 首页 > news >正文

Java程序设计:spring boot(12)——定时调度集成 - Quartz

       在⽇常项⽬运⾏中,我们总会有需求在某⼀时间段周期性的执⾏某个动作。⽐如每天在某个时间段导 出报表,或者每隔多久统计⼀次现在在线的⽤户量等。

       在 Spring Boot 中有 Java ⾃带的 java.util.Timer 类,也有强⼤的调度器 Quartz,还有 Spring Boot ⾃带的Scheduled 来实现。Scheduled 在 Spring3.X 引⼊,默认 SpringBoot ⾃带该功能,使⽤起来也 很简单,在启动类级别添加 @EnableScheduling 注解即可引⼊定时任务环境。但遗憾的是 Scheduled 默认不⽀持分布式环境,这⾥主要讲解 Quartz 时钟调度框架与 Spring Boot 集成。

1 环境整合配置

<!-- Quartz -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

2 源代码添加

2.1 定义job

       com.xxxx.springboot 下添加 jobs 包,定义待执⾏ job 任务。实现 Job 接⼝,并且在 execute ⽅法 中实现⾃⼰的业务逻辑。

public class MyFirstJob implements Job {private Logger log = LoggerFactory.getLogger(MyFirstJob.class);@Overridepublic void execute(JobExecutionContext context) throws
JobExecutionException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");log.info(sdf.format(new Date()) + "-->" + "Hello Spring Boot
Quartz...");}
}

2.2 构建调度配置类

       创建 JobDetail 实例并定义 Trigger 注册到 scheduler ,启动 scheduler 开启调度

@Configuration
public class QuartzConfig {@Beanpublic JobDetail jobDetail1(){return JobBuilder.newJob(MyFirstJob.class).storeDurably().build();}@Beanpublic Trigger trigger1(){SimpleScheduleBuilder scheduleBuilder =
SimpleScheduleBuilder.simpleSchedule()// 每⼀秒执⾏⼀次.withIntervalInSeconds(1)// 永久重复,⼀直执⾏下去.repeatForever();return TriggerBuilder.newTrigger().withIdentity("trigger1","group1").withSchedule(scheduleBuilder).forJob(jobDetail1()).build();}// 每5秒触发⼀次任务@Beanpublic Trigger trigger2(){return TriggerBuilder.newTrigger().withIdentity("trigger2", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?
*")).forJob(jobDetail1()).build();}
}

2.3 启动 StarterApplication

查看控制台打印效果:


http://www.mrgr.cn/news/60692.html

相关文章:

  • 【c语言测试】
  • 高效集成小满OKKICRM与金蝶K3-WISE的成功案例
  • Spring+SpringMVC+SpringJDBC搭建web项目实现商品查询
  • Excell 中几种自定义公式
  • ubuntu2204配置cuda
  • 查找与排序-插入排序
  • 怎么把照片恢复至手机?一文读懂详细教程与多种方法!
  • 从JDK 17 到 JDK 21:Java 新特性
  • 北理工计算机考研难度分析
  • ctfshow(151->154)--文件上传漏洞--.user.ini
  • 热门四款深度数据恢复软件大比拼!!!
  • 一个临床数据收集/调查问卷APP模板(streamlit+MongoDB)
  • rand5生成rand7
  • 代码随想录之字符串
  • Linux 进程间通信_匿名管道
  • IE快捷方式加载特定主页
  • 二叉树的存储方式和遍历方式
  • 错误概率平均错误概率的计算
  • WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现
  • 【Javaee】网络原理—http协议(一)
  • 特种作业操作高压电工题库
  • Spring AOP
  • 洛谷P1025-数的划分 详解
  • DNS域名解析服务器
  • 大模型低资源部署策略
  • 驱动-----LED