如何为 Spring Batch 作业定义模板?

发布于 2024-11-08 20:59:42 字数 532 浏览 0 评论 0原文

我正在使用 Spring Batch 2.1.5。我有很多彼此非常相似的工作,并且我正在寻找一种方法来使用较小的 XML 作为工作模板。

作业之间共享的东西是读取器、处理器、写入器和一个微线程。此外,每个 bean 的一些参数都是相同的。例如,它们都使用相同的数据源。

我考虑了 4 种方法,其中 3 种不起作用...

1 - 使用后处理器将公共 bean 和属性添加为默认值是不可能的,因为 Spring Batch 类 JobParserJobFactoryBean 不是公共类。

2 - 添加 XML 扩展似乎是一件错误的事情,因为我没有向 XML 文件添加任何自定义标签。

3 - 使用 PropertyOverrideConfigurer 我可以将默认值放入属性中,但我必须为每个 bean 定义这些值。所以我会有很多重复的值,我只会将问题转移到属性上。

4 - 使用某种自定义工厂 bean。这些似乎是唯一的选择,但我不知道如何将其插入现有代码中。

有人尝试这样做吗?有人可以提供有关如何做到这一点的提示或推荐资源吗?

I'm using Spring Batch 2.1.5. I have many jobs that are very similar between each other and I'm looking for a way to have an smaller XML acting as a job template.

The things that are shared among jobs are readers, processors, writers and one tasklet. Also some of the parameters for each of these beans are the same. For instance they all use the same data source.

I thought about 4 approaches and 3 of them don't work...

1 - Using a postprocessor to add the common beans and attributes as default values is not possible, because the Spring Batch class JobParserJobFactoryBean is not a public class.

2 - To add an XML extension seems to be a wrong thing, because I'm not adding any custom tags to the XML file.

3 - Using a PropertyOverrideConfigurer I can put default values into properties, but I have to define those values for each bean. So I'll have many repeated values and I'll only move the problem to properties.

4 - Using some kind of custom factory bean. These seems to be the only choice, but I don't know exactly how to plug it into the existing code.

Did anybody try to do this? Can somebody give tips or recommend resources on how to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

栀子花开つ 2024-11-15 20:59:42

Spring Batch 提供了定义要继承的抽象作业(和步骤等)的能力。有关详细信息,请参阅参考手册。使用这个你应该能够准确地完成你正在寻找的事情。

Spring Batch provides the ability to define Abstract Jobs (and steps, etc.) to inherit from. Take a look at the reference manual for more information. Using this you should be able to accomplish exactly what you are looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文