是否可以将现有 Java 项目转换为 Spring-批处理作业

Is it Possible to Convert Existing Java Projects into Spring-Batch Jobs

我的问题没有问题

Spring-Batch 是将少数一次性(一次性完成类型)java 项目(往往在某个时候与数据库交互)转换为自己的项目的正确工具"Jobs" 是 Spring-Batch 项目的一部分?


和Fluff/Background

我工作的公司有几个 "one off" java 项目,它们实际上只做一件事(在任意时间,或者只要我们告诉它),然后就完成了。他们倾向于在其生命周期的某个时刻与数据库进行交互,但不一定同时进行。

还有一些 projects/scripts 我的任务是创建,但与其在我们的盒子里有将近 10 个不同的 perl 脚本和几个罐子,我们可能想把所有东西都装满这些项目在一个地方,当我们需要 运行 时就 运行 (理想情况下通过命令行参数在远程机器上)。从我对 Spring-Batch 所做的研究来看,这听起来正是我们正在寻找的东西,尤其是功能 described here.

我比较熟悉 Spring-Boot 和 Spring 框架,但由于某种原因,阅读 Jobs 和设置时,领域语言对我来说似乎有点陌生,并且我只是想确保我不会浪费时间试图弄清楚这是否不现实。我们希望这只是任何 运行 独立的当前或未来项目的一个舒适的地方,以便我们尽量减少盒子上的混乱。澄清一下,我一直在说项目,但据我了解,如果这些项目要成为 Spring-Batch 项目的一部分,则需要将它们转换为作业。这现实吗?

(将评论转换为答案)

如果任务调度、事务管理、分块消费数据、start/stop 操作的灵活性、重试机制等事情是您发现自己花时间自己编写代码的事情,那么一定要看看 Spring Batch 它具有上述所有功能的强大的已经实施的设施。

如果你的应用程序有很多移动部分,消耗大量外部资源,那么在更宏大的计划中,你不妨潜入 EIP(企业集成模式)水域Apache CamelSpring Integration 非常可靠的实现。

根据您的描述,您的一次性项目是合理的单一重点,因此新框架的学习曲线可能不值得。在这种情况下,如果有意义的话,专注于项目的可重用组件并将它们外部化到 core/helper 库中以实现重用目的可能就足够了。