在 Spring 批次的 SkipPolicy 中访问作业文件名参数

Access job filename parameter in SkipPolicy of Spring Batch

我有一份 Spring Batch 的工作,我用 BeanIO 读取了一些文件,我会处理无效文件,所以我创建了一个 SkipPolicy class.

public class FileVerificationSkipper implements SkipPolicy {

    private static final FluentLogger LOGGER = LoggerService.init(FileVerificationSkipper.class);

    @Override
    public boolean shouldSkip(Throwable exception, int skipCount) throws SkipLimitExceededException {
        if (exception instanceof FileNotFoundException) {
            return false;
        }

        if (exception instanceof BeanReaderException && skipCount <= 10) {
            LOGGER.all().logKey("Error on read file: ").value(exception).asError();
            return true;
        }
        else {
            return false;
        }
    }

}

在我的 reader 步骤中,我像这样访问名称:@Value("#{jobParameters['input.file.name']}") String inputFile

我想记录文件名,我该怎么做?

调试如何Spring批量注入参数我找到了解决方案。

我只需要在 class 中添加 @StepScope 并在我想注入参数的地方创建变量:

@Component
@StepScope
@RequiredArgsConstructor
public class FileVerificationSkipper implements SkipPolicy {

    @Value("#{jobParameters['input.file.name']}")
    private String inputFile;

    ...

}