【问题标题】:Validation step in Spring batchSpring批处理中的验证步骤
【发布时间】:2016-05-30 13:01:06
【问题描述】:

我是第一次使用 Spring 批处理,我需要一些有关验证步骤的帮助。

在真正开始我的批处理作业之前,我需要对要处理的文件进行一些验证:

  • 使用数据库中的信息检查名称
  • 使用系统和数据库中的信息检查第一行和最后一行(这是特定的)
  • 使用第一行中的数据检查总行号

之后我就可以真正开始我的批处理工作了。

我想到了多个相互链接的步骤,初始步骤进行验证,如果文件无效,则过程进入错误步骤。

如何进行此验证?找到的所有阅读器只给我一行文件,我必须创建自己的阅读器吗? 您将采用哪种方法来管理这种行为?

【问题讨论】:

    标签: java spring validation spring-batch batch-processing


    【解决方案1】:

    第一点使用JobExecutionDecider;如果测试未通过,则以错误结束您的工作。 对于剩余的点,您可以编写自己的阅读器来解决问题或

    • 第一行使用FlatFileItemReader.setLinesToSkip()FlatFileItemReader.setSkippedLinesCallback()
    • 使用PeekableItemReader 来检查您是否在最后一行并在您的处理器阶段执行不同的验证。

    这种方法可能需要您为第一行、最后一行和其他行编写不同的域对象。

    【讨论】:

      【解决方案2】:

      您可以使用单步并创建一个侦听器,您可以在 beforeStep 中验证您想要的任何内容,或者您​​可以有两个步骤,第一步是验证并在 StepExecutionListener 的 afterstep 方法中返回适当的返回状态。

      简而言之,使用侦听器进行验证,请参考一个非常好的示例here

      要验证输入文件,你可以参考这个example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        相关资源
        最近更新 更多