在 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;
...
}
我有一份 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;
...
}