CompositeItemProcess SpringBatch

时间:2019-07-24 04:31:56

标签: java spring spring-batch batch-processing

我有这个问题: 我需要将CompositeItemProcess用于两个过程。 我有这个结构:

步骤

@SuppressWarnings("unchecked")
@Bean(name = "stepBines")
public Step stepBines() {
        return this.stepBuilderFactory.get("processJob")
                        .chunk(1)
                        .reader(readerBines())
                        .processor(compoiteItemProcessor())
                        .writer(compositeItemWriter())
                        .build();
}

过程:

@SuppressWarnings("rawtypes")
@Bean
public ItemProcessor processorBinesInternacional(){
    return new ItemProcessBinesInternacional();

}

@SuppressWarnings("rawtypes")
@Bean
public ItemProcessor processorBinesNacional(){
    return new ItemProcessBinesNacional();

}

过程1:

public class ItemProcessBinesInternacional implements ItemProcessor<List<ViAccountRangeDefinition>,List<BinInternacionalMarca>>{


public  ArrayList<BinInternacionalMarca> ListBinInterNacional = new ArrayList<BinInternacionalMarca>();

@Override
public List<BinInternacionalMarca> process(List<ViAccountRangeDefinition> item) throws Exception {

过程2(与过程1非常相似:

public class ItemProcessBinesNacional implements ItemProcessor<List<ViAccountRangeDefinition>,List<BinNacionalMarca>>{


public  ArrayList<BinNacionalMarca> ListBinNacional = new ArrayList<BinNacionalMarca>();

@Override
public List<BinNacionalMarca> process(List<ViAccountRangeDefinition> item) throws Exception {

我尝试过使用

    @SuppressWarnings({ "unchecked", "rawtypes" })
@Bean CompositeItemProcessor compositeItemProcessor()
{
    CompositeItemProcessor<BinInternacionalMarca, BinNacionalMarca> compositeItemProcessor = new CompositeItemProcessor<>();
    compositeItemProcessor.setDelegates((List<? extends ItemProcessor<?, ?>>) Arrays.asList(
            processorBinesNacional(),

            processorBinesInternacional()));

    return compositeItemProcessor;
}

但是不行。我需要使用两个进程和两个编写器,但是CompositeItemWriter可以正常工作。

0 个答案:

没有答案