我可以使用最新的 Spring Batch 来使用 Quartz Scheduler 1.8.6 吗?

Can I use Quartz Scheduler 1.8.6 using the latest Spring Batch?

我需要将 Quartz Scheduler v1.8.6 与最新版本的 Spring Batch 一起使用。有使用 Quartz Scheduler v1.8.6 的遗留批处理作业,但目前不使用 Spring Batch。

我能够使用 Quartz Scheduler v1.8.6 和最新的 Spring Batch v4.1.0 安排一个简单的 Spring 批处理作业并 运行ning,但必须添加一个在我的 pom.xml 中依赖于使用旧版本的 spring-context-support v3.2.18.RELEASE。 spring-context-support 提供了通往 Quartz 和 v3.2 的桥梁。18.RELEASE 是将安排的最新版本,运行 在我的测试代码中是一个简单的工作。

  1. 是否有文档列出了 Spring Batch 和 Quartz Scheduler 的兼容版本?
  2. 以这种方式使用旧的 spring-context-support 是完全错误的方法吗?
  3. 我应该使用旧版本的 Spring Batch 吗?我宁愿不必这样做,因为最新的 Spring 批次似乎有很多很棒的功能。

Is there documentation somewhere that lists compatible versions of Spring Batch and Quartz Scheduler?

您可以在您使用的Spring批处理版本的build.gradle文件中查看quartz的版本。对于Spring batch 4.1.0,你可以使用quartz 2.3.0.

如果你使用Spring引导,你可以检查start.spring.io/actuator/info to get information about spring project versions that are known to work best together when imported via Spring Boot. For example, if you generate a project with start.spring.io使用Spring引导版本2.1.0并添加spring-boot-starter-batchspring-boot-starter-quartz启动器,你将在您的类路径中获得 Spring Batch 4.1.0 和 Quartz 2.3.0。

Is using an old spring-context-support in this way a completely incorrect approach?

没有错(只要它适合你)但不推荐。

  • 如果你使用Spring引导,你将得到最新的spring-context版本(上面给出的例子中的5.1.2)。
  • 如果你使用Spring引导,你仍然可以导入Spring引导提供的maven BOM并让它导入适合你的版本。这比手动管理版本要好。

Should I use an older version of Spring Batch? I would prefer not to have to do this because the latest Spring Batch seems to have a ton of great features.

我不推荐这个。你可以坚持使用 v4.1.0,因为你设法让它像你提到的那样工作。 Spring v4.x 需要 Java 8,因此只要您使用的 quartz 版本在 Java 8 上运行,它就可以安排 Spring 批处理作业。

希望对您有所帮助。