TIL

ItemProcessor

null 반환을 통한 데이터 필터링

ValidatingItemProcessor

public interface Validator<T> {
    void validate(T value) throws ValidationException;
}

public class CommandValidator implements Validator<Command> {
    @Override
    public void validate(Command command) throws ValidationException {
        // ... 특정 로직에 따라 ValidationException 던지기
    }
}
@Bean
public ItemProcessor<Command, Command> commandProcessor() {
    ValidatingItemProcessor<Command> processor = 
        new ValidatingItemProcessor<>(new CommandValidator());
    processor.setFilter(true);  // ValidationException 발생 시 필터링 수행
    return processor;
}

데이터 검증을 통한 실패 처리

데이터 변환

데이터 보강

외부 시스템 통신 최적화

default void beforeWrite(Chunk<? extends S> items) {
}

CompositeItemProcessor

public CompositeItemProcessor(ItemProcessor<?, ?>... delegates) {
    this(Arrays.asList(delegates));
}

public CompositeItemProcessorBuilder<I, O> delegates(List<? extends ItemProcessor<?, ?>> delegates) {
    this.delegates = delegates;

    return this;
}

ClassifierCompositeItemProcessor

// 생성자 사용
public void setClassifier(Classifier<? super I, ItemProcessor<?, ? extends O>> classifier) {
    this.classifier = classifier;
}

// ClassifierCompositeItemProcessorBuilder 사용
public ClassifierCompositeItemProcessorBuilder<I, O> classifier(
        Classifier<? super I, ItemProcessor<?, ? extends O>> classifier) {
    this.classifier = classifier;
    return this;
}