Условно отправка данных нескольким писателям в весенний период - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть некоторая логика в моем процессоре, и на основании этого мне нужно решить, нужно ли мне писать элементы в TableA (WriterA) или TableB (writer)

например, Item подал type, а тип может иметь значение A or B и на основе значения в type подал. Мне нужно решить, в какую таблицу мне нужно записать данные.

1 Ответ

0 голосов
/ 04 сентября 2018

Это может быть достигнуто с помощью Classifier. Ниже приведены конфигурации:

Writer - Writer установит Classifer, чтобы решить, какого писателя нам нужно использовать. На основании выходных данных классификатора будет принято решение.

@Bean
public ItemWriter<Pojo> itemWriter() {
    BackToBackPatternClassifier classifier = new BackToBackPatternClassifier();
    classifier.setRouterDelegate(new MyClassifier());
    classifier.setMatcherMap(new HashMap<String, ItemWriter<? extends Pojo>>() {
        {
            put("A", WriterA);
            put("B", WriterB);

        }
    });
    ClassifierCompositeItemWriter<Pojo> writer = new ClassifierCompositeItemWriter<Pojo>();
    writer.setClassifier(classifier);
    return writer;      
}

Классификатор

public class MyClassifier {

    @Classifier
    public String classify(Pojo Pojo) {
        return Pojo.getType();
    }
}
...