读数据
@Configuration
public class ItemReaderFileDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Person> fileReader;
@Bean
public Job itemReaderFileJob(){
return jobBuilderFactory.get("itemReaderFileJob")
.start(itemReaderFileStep())
.build();
}
public Step itemReaderFileStep() {
return stepBuilderFactory.get("itemReaderFileStep")
.<Person,Person>chunk(2)
.reader(fileReader)
.writer(list -> {
for(Person person:list){
System.out.println("file======="+person);
}
})
.build();
}
}
写数据:
@Configuration
public class ItemWriteFileDemo {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private ItemReader<Person> dbReader;
@Autowired
private ItemWriter<Person> fileWrite;
@Bean
public Job itemWriteFileJob() {
return jobBuilderFactory.get("itemWriteFileJob")
.start(itemWriteFileStep())
.build();
}
@Bean
public Step itemWriteFileStep() {
return stepBuilderFactory.get("itemWriteFileStep")
.<Person, Person>chunk(1)
.reader(dbReader)
.processor(compositeItemProcessor())
.writer(fileWrite)
/*
重试机制
.faultTolerant()//容错机制
.retry(Exception.class)//异常类型
.retryLimit(5)//重试次数
*/
/*
跳过异常机制
.faultTolerant()//容错机制
.skip(Exception.class)//异常类型
.retryLimit(5)//跳过次数
.listener(new SkipListener<Person, Person>() {
@Override
public void onSkipInRead(Throwable throwable) {
}
@Override
public void onSkipInWrite(Person person, Throwable throwable) {
}
@Override
public void onSkipInProcess(Person person, Throwable throwable) {
}
}) //跳过监听器,重试监听器
*/
.build();
}
//多种处理器
@Bean
public CompositeItemProcessor<Person,Person> compositeItemProcessor(){
CompositeItemProcessor<Person,Person> processor = new CompositeItemProcessor<>();
List<ItemProcessor<Person,Person>> list = new ArrayList<>();
ItemProcessor<Person,Person> processor1 = new ItemProcessor<Person, Person>() {
@Override
public Person process(Person person) throws Exception {
return null;
}
};
ItemProcessor<Person,Person> processor2 = new ItemProcessor<Person, Person>() {
@Override
public Person process(Person person) throws Exception {
return null;
}
};
list.add(processor1);
list.add(processor2);
processor.setDelegates(list);
try {
processor.afterPropertiesSet();
} catch (Exception e) {
e.printStackTrace();
}
return processor;
}
}