如何为 Spring Batch 作业定义模板?
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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.