【发布时间】:2021-08-23 01:27:07
【问题描述】:
我是 Spring Batch 的新手。我有一个简单的工作,包括阅读器、处理器、作家和听众。
Step 方法代码示例如下
@Bean public Step step1() { return stepBuilderFactory.get("step1") .<Person, Person> chunk(1) .reader(reader()).listener(customReadItemListener) .processor(processor()).listener(customProcessListener) .writer(writer()).listener(customWriteListener) taskExecutor(taskExecutor()) .build(); }
所有与 Reader 、 Processor 和 Writer 中的逻辑相关的异常都分别通过覆盖 onReadError、onProcessError 和 onWriteError 来处理。 在这些方法中,我调用我的自定义 ExceptionService 来处理异常并将我需要的内容写入日志文件。
但是,我遇到了我还无法弄清楚的问题。在我的作家中,我正在阅读属性文件以获取输出文件名。我的错误处理测试的一部分是将文件名设置为不存在的文件并尝试处理 File Not found 异常。然而,当我运行我的测试时,我无法在我的 customWriteListener 中捕获异常。我尝试添加 StepListener、ChunkListener,但没有一个能够捕捉到异常并且它被抛出到控制台。我了解这是系统类型的错误,应由 Framework 处理。 我的问题是什么是包装它的最佳方法,就像我处理业务类型的异常一样,通过调用它并调用我的 ExceptionService?
【问题讨论】:
标签: java spring-batch