我的工作中有一个Step
从数据库A中读取,然后写入数据库B&下进行。
如果select语句没有产生任何结果,我希望它像往常一样继续processor
和writer
。但是,writer()
未被调用!
这是因为我的writer
是一个复合项目编写器,它有一个更新控制表(数据库C)的编写器,说读者没有读取结果。
我显然会有一个新的Tasklet Step
来关注这个Step
,但它是一个分区步骤。
是否有Job
的配置属性允许空读取不被标记为' NOOP'或类似,但成功?
答案 0 :(得分:2)
您应该可以使用StepExecutionListener
代替ItemWriter
这个用例。在StepExecutionListner#afterStep
中,您可以查看项目读取计数,如果它是0,则执行该数据库更新。作者片段是ItemWriter
,意思是它用于写入已经阅读的项目。
答案 1 :(得分:0)
如果没有读取任何项目,请创建一个返回哨兵项目的自定义ItemReader
添加映射到更新控制表的sentinel项类的自定义ItemWriter
。