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 环境整合配置

java 复制代码
<!-- 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 ⽅法 中实现⾃⼰的业务逻辑。

java 复制代码
public class MyFirstJob implements Job {
 
 private Logger log = LoggerFactory.getLogger(MyFirstJob.class);
 @Override
 public 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 开启调度

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

2.3 启动 StarterApplication

查看控制台打印效果:

相关推荐
桦说编程21 分钟前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen21 分钟前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研24 分钟前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员1 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
一只爱撸猫的程序猿1 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋2 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国2 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~2 小时前
《设计模式》装饰模式
java·设计模式
A尘埃2 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交2 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图