Spring batch 可以在运行时向ClassifierCompositeItemWriter添加更多ItemWriter
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
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吗?如果是的话,我们需要查看设计