假如execute方法中需要一些额外的数据怎么办?比如说execute
中希望发送一封邮件,但是我需要知道邮件的发送者、接收者等信息?
存在两种解决方案:
1.JobDataMap类:
每个JobDetail都关联了一个JobDataMap实例,JobDataMap是java.util.Map的子类,基本上是提供key-value形式的数据,并提供了一些便利方法(主要是对java基本数据类型的支持,如put(String key,int value)),当开发人员创建JobDetail的时候,可以把附加信息放到JobDataMap中,那么在execute方法中可以根据key找到需要的值。
JobDetail job = new JobDetail....
job.getJobDataMap().put("from","snowway@vip.sina.com");
...
在execute中
String from = jobExecutionContext.getJobDetail().getJobDataMap().getString("from");
....
不过,当你使用数据库存储JobDetail的时候(默认情况下使用RAM),这里有一个致命的弱点,你不能把没有实现java.io.Serializable的对象放入JobDataMap中,因为Quartz将使用Blob字段保存(也可以通过配置文件关闭)序列化过的JobDataMap中的对象。比如你在execute方法中需要一个java.sql.Connection接口实例,这种情况也是普遍的,那么通常情况下你不能把Connection放入JobDataMap,即使你只想在execute中使用。(注:读者可暂时认为上面这段话是正确的,然而可以通过指示quartz改变这种行为,那属于高级话题)
2.假如你需要一个java.sql.Connection,用于在execute中完成某些操作,那么你可以把Connection放入Quartz的SchedulerContext中,execute也可以访问,并且Quartz不会持久化SchedulerContext中的任何东西。
scheduler.getContext().put("java.sql.Connection",connection);
execute中
Connection con = (Connection)jobExecutionContext.getScheduler().getContext().get("java.sql.Connection");
分享到:
相关推荐
在本篇讲解中,我们从代码示例出发,详细分析了如何使用Quartz进行任务调度,包括Job的定义、Trigger的配置以及自定义监听器的实现,希望能帮助读者更好地理解和应用Quartz。 以上内容覆盖了给定文件中标题和描述所...
标题和描述中提到的主题是关于Quartz任务调度系统的使用培训。Quartz是一个开源的任务调度库,其主要用途是让开发者能够轻松地安排在特定时间或根据特定规则运行代码的任务,也就是作业(Jobs)。Quartz能够与Java...
在Android Studio中使用Quartz,可以为应用程序添加定时执行的任务功能,例如定期发送通知、更新数据或者执行后台服务。下面我们将深入探讨如何在Android Studio中集成并使用Quartz。 ### 1. Quartz简介 Quartz是...
在本教程中,我们将深入探讨如何在Spring Boot环境中配置和使用Quartz,以及解决服务注入和服务层传参的问题。 首先,让我们了解Spring Boot与Quartz的集成基础。要在Spring Boot项目中引入Quartz,我们需要在`pom....
如果使用的是Spring Boot,可以在`application.properties`或`application.yml`中配置Quartz,并通过`@EnableScheduling`注解启用定时任务支持。 8. **动态管理定时任务** Spring提供的`SchedulerFactoryBean`...
Quartz是一款广泛应用于Java环境下的开源任务调度框架,它提供了高度灵活的任务调度机制,使得开发者可以轻松地在应用程序中安排任务的执行。本教程将详细讲解如何使用Quartz实现一个简单的定时器功能。 首先,我们...
Job类需要实现`org.quartz.Job`接口,并覆盖`execute(JobExecutionContext context)`方法,这是执行实际任务的地方。Trigger则通过`org.quartz.Trigger`接口定义,它会告诉Quartz何时启动Job。 在项目...
Spring Boot与Quartz的集成使得我们可以方便地在Spring应用中使用定时任务功能。Spring Boot提供了自动配置,简化了Quartz的设置。 在Spring Boot 2.3中集成Quartz,你需要先添加依赖。在`pom.xml`文件中,引入以下...
本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的核心概念和技术。 1. **Quartz基本概念** - **Job**:代表一个具体的任务,它定义了任务要执行的操作。 - **Trigger**:触发器,定义了任务何时开始...
以下将详细介绍如何在Spring Boot应用中使用YAML文件配置Quartz定时任务,以及涉及的Spring Cloud Alibaba、Dubbo和Nacos的相关知识。 首先,我们需要在`pom.xml`中引入相关的依赖。Spring Boot的`spring-boot-...
Quartz是一款开源的作业调度框架,它允许程序在指定的时间执行特定的任务,广泛应用于Java企业级应用中。本文将深入探讨如何使用Quartz配合cron表达式来实现定时任务的实例。 首先,我们要理解cron表达式。Cron...
Spring 中 Quartz 调度器的使用是指在 Spring 框架中使用 Quartz 调度器来实现任务调度。Quartz 是一个功能强大且灵活的开源任务调度器,能够满足复杂的任务调度需求。在 Spring 中使用 Quartz 调度器可以将任务调度...
Quartz是一款广泛应用于Java开发中的开源任务调度框架,它提供了强大的定时任务管理功能,支持复杂的调度策略和分布式部署。在实际项目中,有时我们需要判断一个Quartz任务是否正在运行,以便进行相应的操作,如避免...
Quartz是一款功能强大的开源Java定时框架,用于在Java应用程序中创建和管理计划任务。它允许开发者精确地安排作业,从简单的一次性任务到复杂的调度模式。Quartz 1.5.2是该项目的一个较旧版本,但它仍然包含了实现...
要在Spring Boot中使用Quartz,我们需要以下步骤: 1. 添加依赖:首先,在`pom.xml`文件中添加Quartz和Spring Boot的Starter Web依赖。例如: ```xml <groupId>org.springframework.boot <artifactId>spring-...
SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...
在这个“quartz 实现按天、按周、按月定时任务的简单demo”中,我们将探讨如何使用 Quartz 在 Java 环境下设置按天、按周和按月的定时任务。 首先,我们需要引入 Quartz 的依赖库到项目中。通常,这可以通过 Maven ...
### Quartz使用总结与详解 #### 一、Quartz概述 Quartz是一个开源的任务调度框架,主要功能在于能够根据用户自定义的时间规则来触发任务执行。Quartz提供了丰富的接口供开发者进行二次开发,使得任务调度变得非常...
Spring框架的集成使得在Java环境中使用Quartz变得更加便捷。本文将深入探讨如何在Spring环境中配置和使用Quartz进行任务调度。 首先,Quartz是一个开源的作业调度框架,它允许开发者定义定时任务并按照预定的时间...
要开始使用Quartz,首先需要在项目中引入必要的依赖。基础依赖是quartz-<version>.jar,这是Quartz的核心库。除此之外,根据你的需求,可能还需要其他第三方库,例如Commons Digester,它位于<QUARTZ_HOME>/lib/core...