Spring batch 可以在运行时向ClassifierCompositeItemWriter添加更多ItemWriter

Spring batch 可以在运行时向ClassifierCompositeItemWriter添加更多ItemWriter,spring-batch,Spring Batch,ClassifierCompositeItemWriter允许我们根据某物的值选择在运行时使用哪个ItemWriter。例如 public class CustomerClassifier implements Classifier<Customer, ItemWriter<Customer>> { private ItemWriter<Customer> fileItemWriter; private ItemWriter<Cu

ClassifierCompositeItemWriter允许我们根据某物的值选择在运行时使用哪个ItemWriter。例如

public class CustomerClassifier implements
    Classifier<Customer, ItemWriter<Customer>> {
    private ItemWriter<Customer> fileItemWriter;
    private ItemWriter<Customer> jdbcItemWriter;
    @Override
    public ItemWriter<Customer> classify(Customer customer) {
        if(customer.getState().matches("^[A-M].*")) {
            return fileItemWriter;
        } else {
            return jdbcItemWriter;
        }
    }
    public void setFileItemWriter(ItemWriter<Customer> fileItemWriter) {
        this.fileItemWriter = fileItemWriter;
    }
    public void setJdbcItemWriter(ItemWriter<Customer> jdbcItemWriter) {
        this.jdbcItemWriter = jdbcItemWriter;
    }
}
公共类CustomerClassifier实现
分级机{
私有ItemWriter fileItemWriter;
私有ItemWriter jdbcItemWriter;
@凌驾
公共ItemWriter分类(客户){
if(customer.getState()匹配(“^[A-M].*)){
返回fileItemWriter;
}否则{
返回jdbcItemWriter;
}
}
public void setFileItemWriter(ItemWriter fileItemWriter){
this.fileItemWriter=fileItemWriter;
}
public void setJdbcItemWriter(ItemWriter jdbcItemWriter){
this.jdbcItemWriter=jdbcItemWriter;
}
}
这里关于哪些ItemWriter是可能的决定都是在编译时完成的


是否可以在运行时添加更多ItemWriter

如果我们添加所有ItemWriter,然后从Customer对象中添加decision drive,会怎么样?可能有数千个,直到运行时才知道它们。基本上,批处理应用程序将一段复杂的树状数据和过滤器放入多个CSV文件中。你是说除了fileItemWriter和jdbcItemWriter之外,还有上千个writer吗?如果是的话,我们需要查看设计