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

郑州网站建设网络公司网门app下载

郑州网站建设网络公司,网门app下载,有谁知道网站优化怎么做,网站开发 北京外包公司全文目录: 开篇语前言摘要概述1. 基于 XML 的传统配置配置步骤1.1 Maven 依赖1.2 XML 配置文件1.3 实现 Job 类 2. 基于 Java Config 的现代配置方式配置步骤2.1 Maven 依赖2.2 配置类2.3 实现 Job 类 3. 动态任务调度动态添加任务动态删除任务 4. Quartz 持久化配置…

全文目录:

    • 开篇语
    • 前言
    • 摘要
    • 概述
    • 1. 基于 XML 的传统配置
      • 配置步骤
        • 1.1 Maven 依赖
        • 1.2 XML 配置文件
        • 1.3 实现 Job 类
    • 2. 基于 Java Config 的现代配置方式
      • 配置步骤
        • 2.1 Maven 依赖
        • 2.2 配置类
        • 2.3 实现 Job 类
    • 3. 动态任务调度
      • 动态添加任务
      • 动态删除任务
    • 4. Quartz 持久化配置
      • 配置数据库
        • 数据库脚本
        • 配置文件
      • 启用持久化
    • 应用场景案例
    • 优缺点分析
      • 优点
      • 缺点
    • 小结
    • 总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

在上一期文章中,我们详细解析了 JVM 垃圾回收器的原理与调优策略,帮助大家掌握了如何通过优化 GC 来提升 Java 应用性能。然而,Java 开发的核心远不止性能调优,任务调度也是企业级开发中不可或缺的一部分。

Quartz 是一个功能强大且灵活的任务调度框架,而结合 Spring 框架 使用,能够更加高效、简洁地实现定时任务调度功能。本期,我们将深入探讨 SpringQuartz 的配置方式,从基础配置到动态任务调度,逐步揭示 SpringQuartz 的强大功能与最佳实践。


摘要

本文将系统讲解 SpringQuartz 的几种配置方式,包括:

  • 基于 XML 的传统配置。
  • 基于 Java Config 的现代配置方式。
  • 动态任务调度与持久化配置。
  • 常见调试与优化技巧。

通过本文的学习,你将能够轻松掌握如何在项目中集成 Quartz,快速搭建稳定高效的任务调度系统。


概述

Quartz 是一个开源的 Java 任务调度框架,提供了强大的调度功能,例如:

  • 基于 Cron 表达式的任务调度
  • 动态任务管理
  • 持久化任务存储
  • 分布式任务调度支持

结合 Spring 框架 使用,可以利用 Spring 的依赖注入与事务管理能力,简化任务调度的配置与开发。

SpringQuartz 的基本架构包含以下几个关键组件:

  1. Job:任务逻辑的核心实现。
  2. Trigger:定义任务触发的规则,例如 Cron 表达式。
  3. Scheduler:任务调度器,负责管理任务的执行。

以下,我们将以多种配置方式逐步展示 SpringQuartz 的强大功能。


1. 基于 XML 的传统配置

这是 Quartz 最早期的集成方式,使用 Spring 的 XML 配置文件来定义调度器、任务和触发器。

配置步骤

1.1 Maven 依赖

在项目的 pom.xml 中引入 Quartz 和 Spring 的依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version>
</dependency>
1.2 XML 配置文件

applicationContext.xml 中定义调度器、任务和触发器:

<bean id="exampleJob" class="com.example.jobs.ExampleJob" /><bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="exampleJob" /><property name="targetMethod" value="execute" />
</bean><bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="jobDetail" /><property name="cronExpression" value="0/10 * * * * ?" /> <!-- 每10秒执行一次 -->
</bean><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="cronTrigger" /></list></property>
</bean>
1.3 实现 Job 类

创建 ExampleJob 类,包含任务逻辑:

package com.example.jobs;public class ExampleJob {public void execute() {System.out.println("Executing Job: " + System.currentTimeMillis());}
}

运行项目后,每隔 10 秒钟会在控制台打印 Executing Job


2. 基于 Java Config 的现代配置方式

随着 Spring Boot 的流行,基于 Java Config 的配置方式逐渐成为主流,简洁高效。

配置步骤

2.1 Maven 依赖

与 XML 配置相同,引入 Quartz 和 Spring Boot 的依赖。

2.2 配置类

通过 @Configuration 注解配置 Quartz:

import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic JobDetail exampleJobDetail() {return JobBuilder.newJob(ExampleJob.class).withIdentity("exampleJob").storeDurably().build();}@Beanpublic Trigger exampleJobTrigger() {CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/10 * * * * ?");return TriggerBuilder.newTrigger().forJob(exampleJobDetail()).withIdentity("exampleTrigger").withSchedule(scheduleBuilder).build();}
}
2.3 实现 Job 类

创建 Quartz 的标准 Job 实现:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class ExampleJob implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {System.out.println("Executing Job: " + System.currentTimeMillis());}
}

运行项目后,同样会每隔 10 秒钟执行一次任务。


3. 动态任务调度

实际项目中,任务调度往往需要动态添加、修改或删除。以下是动态管理 Quartz 任务的示例。

动态添加任务

import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class QuartzService {@Autowiredprivate Scheduler scheduler;public void addJob(String jobName, String triggerName, String cronExpression) throws SchedulerException {JobDetail jobDetail = JobBuilder.newJob(ExampleJob.class).withIdentity(jobName).build();CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName).withSchedule(scheduleBuilder).forJob(jobDetail).build();scheduler.scheduleJob(jobDetail, trigger);}
}

调用 QuartzServiceaddJob 方法即可动态添加任务:

quartzService.addJob("dynamicJob", "dynamicTrigger", "0/15 * * * * ?");

动态删除任务

public void removeJob(String jobName, String triggerName) throws SchedulerException {scheduler.unscheduleJob(new TriggerKey(triggerName));scheduler.deleteJob(new JobKey(jobName));
}

调用 removeJob 方法即可删除指定任务。


4. Quartz 持久化配置

Quartz 提供了将任务存储到数据库的能力,以便在系统重启后任务依然可用。

配置数据库

数据库脚本

Quartz 提供了创建任务表的 SQL 脚本(位于 Quartz 的官方文档中),运行脚本以初始化数据库。

配置文件

application.properties 中配置 Quartz 数据源:

spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.datasource.url=jdbc:mysql://localhost:3306/quartzdb
spring.datasource.username=root
spring.datasource.password=123456

启用持久化

在 Spring 配置中启用持久化:

@Bean
public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {SchedulerFactoryBean factory = new SchedulerFactoryBean();factory.setDataSource(dataSource);factory.setOverwriteExistingJobs(true);return factory;
}

应用场景案例

  1. 定时数据同步:通过 Quartz 定时同步外部数据,例如定时抓取天气数据或电商库存信息。
  2. 消息推送系统:实现基于时间的消息推送功能,例如定时发送优惠信息。
  3. 任务处理调度:调度后台任务,例如生成报表或清理日志。

优缺点分析

优点

  1. 配置灵活:支持 XML、Java Config 等多种配置方式。
  2. 动态管理:支持任务的动态添加、修改和删除。
  3. 持久化支持:任务信息可持久化到数据库,支持系统重启后的任务恢复。
  4. 强大的触发规则:支持 Cron 表达式及多种触发器。

缺点

  1. 学习曲线较高:Quartz 的功能复杂,配置相对较繁琐。
  2. 对分布式支持有限:需要与其他框架(如 Spring Cloud)结合实现分布式调度。

小结

SpringQuartz 是 Java 开发中任务调度的利器,通过灵活的配置方式,可以满足绝大多数定时任务需求。本文从传统 XML 配置到现代 Java Config,以及动态任务调度与持久化配置,全面解析了 SpringQuartz 的功能与使用场景。


总结

无论是简单的任务调度,还是复杂的动态任务与持久化场景,SpringQuartz 都能提供强大支持。通过结合本文的学习与实践,你将能够在项目中灵活运用 Quartz,轻松构建高效、稳定的任务调度系统。

下一期,我们将继续探索 分布式任务调度与 Quartz 在分布式架构中的应用,敬请期待!

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!


文章转载自:

http://qFd90XW8.sypby.cn
http://iQMVipi3.sypby.cn
http://N4WnBAgv.sypby.cn
http://KCEHWxJA.sypby.cn
http://6rHtUkhi.sypby.cn
http://HwmYgwHZ.sypby.cn
http://tuXRWmBk.sypby.cn
http://qHQb7JfJ.sypby.cn
http://3ZhJ2mUe.sypby.cn
http://P1uE1Fsk.sypby.cn
http://JwBSU6YE.sypby.cn
http://9FtlVStx.sypby.cn
http://4f0mKZiS.sypby.cn
http://bSoiSgC1.sypby.cn
http://46BuoIOk.sypby.cn
http://lLMmBSaX.sypby.cn
http://hLKdvkFT.sypby.cn
http://1rw0ggFm.sypby.cn
http://KaIzd3IA.sypby.cn
http://IMEFYaLA.sypby.cn
http://Rqq6OB47.sypby.cn
http://mMgWNr7u.sypby.cn
http://Ivpk1D1G.sypby.cn
http://NAfH4Yjj.sypby.cn
http://DFeNcvFj.sypby.cn
http://Fvr5ekvt.sypby.cn
http://F7jkDyfb.sypby.cn
http://1BBgSGEd.sypby.cn
http://kxAOuemQ.sypby.cn
http://rbETtS88.sypby.cn
http://www.dtcms.com/wzjs/734390.html

相关文章:

  • 网站建设开票税收分类买卖网站
  • 手绘风格的网站济南比较大的网站制作公司
  • 免费的网站制作平台青岛网站推广的价格
  • 影视 wordpress苏州seo公司 翼好
  • 书店建设网站的能力网站带后台免费下载
  • 国内网站开发不用wordpress足球直播网站开发定制
  • 会展行业门户网站建设个人简历网免费模板
  • 网站运行团队建设wordpress search制作
  • 用dw建设网站娱乐公司网站建站背景介绍
  • 公司有必要建设网站吗科普重庆网站
  • 网站百度关键词排名软件查询网ip138子域名
  • 前端做的网站网站建设栏目结构表
  • iis添加网站的物理路径2016企业网站建设合同
  • 怎么在电脑上做网站注册公司都需要什么材料
  • 公司招聘一个网站建设来做推广如何办好公司网站
  • 南平摩托车罚款建设网站缴费谷歌浏览器安卓版下载
  • 互联网做网站建设网站都要学些什么问题
  • 怎样做商城网站的推广企业网站建设报价明细表
  • 服装厂家东莞网站建设网站如何做问卷调查报告
  • 建设网站成本动漫设计专业就业方向
  • 苏州网站建设哪家更好成都高端网页开发公司
  • 商城网站建设解决方案怎样做网站的子网
  • 网站开发人员是干什么的网站开发三层结构
  • 网站营销的流程商场设计平面图
  • 在县城做同城网站怎么样镇江网站制作哪家便宜
  • 建立网站图片青海网站建设公司哪家好
  • 重庆江津网站设计公司哪家好建设机械网站精英
  • 兰州网站建设哪家好清远网站建设公司
  • 小程序开发公司seo专业实战培训
  • 网站建设必须买数据库么wordpress加上特效