ItemProcessor에는 고유한 비즈니스 로직이 들어가는 곳이다.
ItemProcessor의 process() 메서드가 null을 반환하면 해당 item은 제외된다.read() 메서드를 호출해 청크를 생성process() 메서드 호출process()에서 null이 반환되면 최종 청크에서 제외ItemWriter에 전달되는 청크 크기는 초반 청크의 크기보다 작아진다.null이 반환되는 경우
null 반환 방식의 데이터 검증을 수행하는 ItemProcessor 구현체ValidatingItemProcessor를 생성하려면 Validator 인터페이스가 필요하다.
org.springframework.batch.item.validator.Validatorpublic interface Validator<T> {
void validate(T value) throws ValidationException;
}
public class CommandValidator implements Validator<Command> {
@Override
public void validate(Command command) throws ValidationException {
// ... 특정 로직에 따라 ValidationException 던지기
}
}
T 제네릭 타입(item의 타입)을 받아 ValidationException을 던지도록 구현하면 된다.
setFilter(true)를 설정해야 ValidationException이 발생했을 때 null이 반환된다.setFilter(false)가 되면 예외가 상위로 전달되어 Step이 실패한다.@Bean
public ItemProcessor<Command, Command> commandProcessor() {
ValidatingItemProcessor<Command> processor =
new ValidatingItemProcessor<>(new CommandValidator());
processor.setFilter(true); // ValidationException 발생 시 필터링 수행
return processor;
}