【问题标题】:Whats the difference between the Job and JobDetail exactly in Quartz? [closed]Quartz 中的 Job 和 JobDetail 有什么区别? [关闭]
【发布时间】:2020-04-25 17:47:05
【问题描述】:

为什么 Quartz 想出了像 JobDetail 这样的单独类?当他们可以 仅容纳 Job 类中的所有属性

这是作者的实施缺陷吗?

【问题讨论】:

  • 您在谈论哪个确切版本以及文档对这些类有什么看法?您使用的是哪种编程语言?
  • 我在问Java,quartz-scheduler.org
  • 哪个版本?
  • 所有最新版本都有这些类

标签: java quartz-scheduler jobs job-scheduling quartz


【解决方案1】:

首先两者都是接口。

Job 的实现,即。它唯一的方法void execute(JobExecutionContext) 是石英调度程序调用以执行所需任务的方法

由代表要执行的“作业”的类实现的接口。


JobDetails 是与Job 实现相关的元数据,它们包含对您要运行的Job 的引用,并允许您向Job 提供一些额外的数据

传达给定 Job 实例的详细属性。 JobDetails 将使用 JobBuilder 创建/定义。

Quartz 不存储 Job 类的实际实例,而是允许您通过使用 JobDetail 来定义一个实例。

作业具有与其关联的名称和组,它们应该在单个调度程序中唯一标识它们。


这里做出的这个设计决定似乎是合理的,因为它遵循关注点分离方法。

要执行的Job 通过其JobExecutionContext 获取其所有输入数据,并且不需要关心任何其他与石英相关的属性,例如作业的名称或组。

然而,为了运行你的Job,quartz 调度器需要一些额外的信息。因此,需要一个 JobDetail 实现来保存此信息。

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 2010-12-25
    • 2018-05-21
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多